python画图之坐标轴原点及刻度设置

汪圣毅-安徽医科大学第一附属医院
创建于06-16
阅读 273
收藏TA

需扫码在手机上打开
文章后点击更新提醒

matplotlib画图时,默认状态下,坐标轴的原点一般不是0,但是,多数情况下,要求坐标轴的原点在x轴、y轴均处于0的位置,可以用ax.set_xlim、ax.set_ylim来设置。

默认绘图举例的代码如下

import matplotlib.pyplot as plt

import numpy as np

x=np.linspace(1,10,50)

y=x**2

plt.rcParams['axes.spines.left'] = True

plt.rcParams['axes.spines.right'] = False

plt.rcParams['axes.spines.bottom'] = True

plt.rcParams['axes.spines.top'] = False

plt.plot(x,y)

plt.show()

图片如下

可以看到,坐标轴的原点不在0的位置,刻度朝向外侧,刻度标签即数字不是太理想,或者说不是太符合作者的个性化要求。线条较少,没有网格线条,图片比较单调。

用ax.set_xlim和ax.set_ylim,重新规划x轴和y轴的范围,最小值设置为0;ax.axes.set_xticks和ax.axes.set_yticks自定义刻度,即ticks的显示位置;ax.tick_params函数自定义刻度朝内;ax.grid设置图片内部网格,即grid的线条样式(line style),优化后的最终图片如下。

优化图片的操作代码如下



# 创建一个新图表

fig, ax = plt.subplots()


# 用上面的x、y数据重新绘图

ax.plot(x, y)


# 设置坐标轴的标记范围和刻度的位置

ax.set_xlim(0, 12)

ax.set_ylim(0, 100)

ax.axes.set_xticks([0,3,6,9,12])

ax.axes.set_yticks([0,25,50,75,100])

#设置x轴、y轴的刻度方向,均朝向内侧

ax.tick_params(axis='both',direction='in')

#设置网格线的样式,即线条的样式line style

ax.grid(ls='-.')

plt.show()

由上图可见,x轴上,线条的最大值约为10,图片右侧空了一块,不够美观。继续优化,ax.set_xlim(0, 12)中,改为0到10,ax.axes.set_xticks([0,3,6,9,12])中,删除12,不在x轴的12处添加刻度数字,代码及图片如下

# 创建一个新图表

fig, ax = plt.subplots()


# 用上面的x、y数据重新绘图

ax.plot(x, y)


# 设置坐标轴的标记范围和刻度的位置

ax.set_xlim(0, 10)

ax.set_ylim(0, 100)

ax.axes.set_xticks([0,3,6,9])

ax.axes.set_yticks([0,25,50,75,100])

#设置x轴、y轴的刻度方向,均朝向内侧

ax.tick_params(axis='both',direction='in')

#设置网格线的样式,即线条的样式line style

ax.grid(ls='-.')

plt.show()

简单总结:matplotlib的自定义功能比较强大,通过自定义设置,可以实现图片在多个不同特征上的个性化,从而满足杂志、文章、讲课时PPT的要求。

阅读 273
文章由 美篇工作版 编辑制作
投诉