作图默认的坐标轴刻度是向外的,但有些期刊要求刻度向内。
方法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()