Tips of Matplotlib in Python
颜色棒(colorbar)相关
imshow设置颜色范围
ax.imshow(data, vmin = vm0, vmax = vm1)
对数颜色轴
ax.imshow(data, norm = matplotlib.colors.LogNorm(vmin=vm0, vmax=vm1))
多子图的画布添加一个公共颜色棒/添加一个colorbar在最右侧
cax = fig.add_axes([0.925, 0.1, 0.025, 0.85])
cb = plt.colorbar(im,cax=cax)
自定义颜色轴需要显示的刻度
(如果是对数坐标,需要第二行代码)
cb = plt.colorbar(im, ticks=[0.05,0.1,0.2,0.3])
cb.set_ticklabels([0.05,0.1,0.2,0.3])
设置颜色图colormap上下限以外的值的颜色,bad/NaN值颜色
用copy不改变该cmap的默认值
import copy
import matplotlib
cmap = copy.copy(matplotlib.cm.Spectral) #拷贝Spectral这个colormap
cmap.set_under('gray',0.7) #值低于下限的颜色,默认为cmap中的最小值
cmap.set_over('gray',0.7) #值高于上限的颜色
cmap.set_bad('gray',0.7) #NaN值颜色
plt.imshow(im, cmap=cmap)
画布(fig)布局相关
隐藏空白子图
ax.set_visible(False)
对齐图中x/y/所有轴标签
fig.align_xlabels()
fig.align_labels()
调整画布边缘白色区域
plt.subplots_adjust(left=0.05, bottom=0.1, right=0.9, top=0.9, wspace=0.15)
轴(ax)相关
获得轴的上下限
ax.get_xlim()
x轴反向
plt.gca().invert_xaxis()
ax.invert_xaxis()
对数y轴
ax.set_yscale('log')
关闭、隐藏x轴刻度标签
plt.setp(ax.get_xticklabels(), visible=False)
关闭y轴主/次刻度
plt.setp(ax.get_yticklines(minor=True), visible=False)
图的右侧添加刻度和标签
ax.tick_params(right = True, labelright = True)
# 打开上侧次要刻度
ax.tick_params(top = True, which='minor')
双y轴/创建副y轴的ax
ax2 = ax.twinx()
全局xlabel/总ylabel
fig.supxlabel('x')
设置y刻度/刻度标签的颜色
ax.tick_params(color='C0')
ax.tick_params('y',labelcolor='C0')
未整理
imshow自定义长宽比(像素不固定为正方形/自动拉伸像素)
ax.imshow(data, aspect='auto')
显示坐标网格(只对主刻度显示)
plt.grid(True,ls=':',lw=0.2,zorder=1,color='dimgray', which="major")
# 若只画x轴的网格
ax.xaxis.grid(True)
text文本右侧/上端/中心对齐
plt.text(ha='right', va='top')
plt.text(va='center')
text文本参照ax百分比确定位置,调整行距
plt.text(transform = ax.transAxes, linespacing=1.5)
随机选1/10的点,常用于减少散点数量
ind = np.random.randint(0,len(x),size=round(len(x)/10))
只在最外侧坐标轴显示label / 判断ax是否在边缘的命令
if ax.is_last_row(): ax.set_xlabel('x')
if ax.is_first_col(): ax.set_ylabel('y')
imshow以左下角为原点
plt.imshow(origin='lower')
imshow保存图片时候像素边界模糊/串色的问题,把默认的反锯齿插值设为none
plt.imshow(data, interpolation='none')
设置子图投影法
fig,axes = plt.subplots(1,1, figsize=(10,5), dpi=200, subplot_kw={'projection': 'mollweide'})
设置为默认风格
import matplotlib.style as style
style.use('default')