作图默认的坐标轴刻度是向外的,但有些期刊要求刻度向内。
方法1
通过rcParams设置,类似的方式在设置中文字体时用过,但自己还不是特别熟,不知道会不会改变默认样式(似乎不会)。
plt.rcParams['xtick.direction'] = 'in' # 将x轴的刻度线方向设置向内 plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度线方向设置向内
方法2
通过ax.tick_params中从参数direction来设置
''' axis: x轴还是y轴 direction:"in" 向内,"out"向外 which:"major" 设置主轴参数,"minor"设置次轴参数,"both"l两个轴的参数一起设置 labelsize:设置刻度标签的字体大小 length:设置标签刻度的长度 ''' # y轴 ax.yaxis.set_minor_locator(yminor_1) ax.yaxis.set_major_locator(ymajor_1) ax.tick_params(axis="y", direction="in", which="minor", length=4) ax.tick_params(axis="y", direction="out", which="major", labelsize=15, length=5)设置主次刻度
参考链接 https://blog.csdn.net/Admiral_x/article/details/124778091
示例代码如下
import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator, AutoLocator, FixedLocator x = np.arange(1, 100) y = x**2 fig = plt.figure(figsize=(9, 6)) ax = fig.add_subplot(111) # 准备 x/y轴刻度,以及刻度标签 # x轴 xmajor = MultipleLocator(10) # 主 10 的倍数 xminor = MultipleLocator(2) # 次 2的倍数 # y轴 ymajor_1 = MultipleLocator(2000) yminor_1 = MultipleLocator(400) # 设置 x/y轴刻度,以及刻度标签 # x 轴 ax.xaxis.set_minor_locator(xminor) ax.xaxis.set_major_locator(xmajor) ax.tick_params(axis="x", direction="in", which="minor", length=4) ax.tick_params(axis="x", direction="out", which="major", labelsize=15, length=5) ''' axis: x轴还是y轴 direction:"in" 向内,"out"向外 which:"major" 设置主轴参数,"minor"设置次轴参数,"both"l两个轴的参数一起设置 labelsize:设置刻度标签的字体大小 length:设置标签刻度的长度 ''' # y轴 ax.yaxis.set_minor_locator(yminor_1) ax.yaxis.set_major_locator(ymajor_1) ax.tick_params(axis="y", direction="in", which="minor", length=4) ax.tick_params(axis="y", direction="out", which="major", labelsize=15, length=5) ax.plot(x,y) plt.show()对数坐标
之前自己采用的方案是ax1.set_xscale('log')搭配plt.style.use(‘ggplot’)使用,显示效果更佳。之前写的链接。
其他可供选择方案如下
其他关键参数ax.semilogx
ax.semilogy
ax.loglog
具体用法可查阅官方文档
ax.set_xticks
ax.set_yticks
from matplotlib import pyplot as plt
x=range(2,26,2)
y=[13,15,23,16,14,34,14,14,16,36,25,26]
fig=plt.figure(figsize=(20,8),dpi=80)#figsize是调整图片大小,dpi是调整图片清晰度
plt.plot(x,y)
#x,y轴刻度问题
plt.xticks(x)#其实也可以 plt.xticks(range(2,26))
plt.yticks(y)
#plt.savefig("./no1.png")#保存为svg图像格式 放大后不会有锯齿
plt.show()



