Matlab里做多给轴的函数很直接,双轴是plotyy, 三轴是plotyyy, 四轴是plot4y,更多应该是multiplotyyy。
而matplotlib似乎可以用figure.add_axes()来实现,探索中……
多轴绘制的图层原理
关于Matplotlib的图层
图层可分为四种
Canvas层 画布层 位于最底层,用户一般接触不到。 matplotlib.pyplot就是一个canvas层
Figure层 图像层 建立在Canvas之上。 plt.figure()就是一个figure层
Axes层 坐标层 建立在Figure之上。fig.add_axes(ax)就加一个Axes层ax在figure上,这时就可以画出一个空白的坐标了。
plot层 绘制层 坐标轴、图例等辅助信息层以及图像层都是建立在Axes之上
【2018-5-14】
多轴的绘制要用到有两种方法可以实现,一是用主轴和寄生轴的方法,即mpl_toolkits.axisartist.parasite_axes里的HostAxes,和ParasiteAxes。 另一种是用twinx(),结合mpl_toolkits.axes_grid1里的host_subplot。 这里用寄生轴的方法实现。
首先是要创建主轴用HostAxes(figure,[ 左,下,宽,高 ]) 然后寄生出独立的y轴来,并共享x轴。独立的y轴对应独立的曲线 将寄生轴加入主轴的列表
第一根寄生轴可以直接借用原坐标的右轴,所以不需要新增轴 如果需要两个以上的y轴,第三个y轴就要新建固定轴了,要用到get_grid_helper().new_fixed_axis 设置第三及更多Y轴的偏移量 将主轴装载到figure上 设置轴的外面特性,比如颜色,刻度范围等
frommpl_toolkits.axisartist.parasite_axes import HostAxes, ParasiteAxes
import matplotlib.pyplotasplt
import numpyasnp
fig= plt.figure(1) #定义figure,(1)中的1是什么
ax_cof= HostAxes(fig, [0, 0, 0.9, 0.9]) #用[left, bottom, weight, height]的方式定义axes,0 <= l,b,w,h <= 1#parasite addtional axes, share x
ax_temp= ParasiteAxes(ax_cof, sharex=ax_cof)
ax_load= ParasiteAxes(ax_cof, sharex=ax_cof)
ax_cp= ParasiteAxes(ax_cof, sharex=ax_cof)
ax_wear= ParasiteAxes(ax_cof, sharex=ax_cof)
#append axes
ax_cof.parasites.append(ax_temp)
ax_cof.parasites.append(ax_load)
ax_cof.parasites.append(ax_cp)
ax_cof.parasites.append(ax_wear)
#invisible right axis of ax_cof
ax_cof.axis['right'].set_visible(False)
ax_cof.axis['top'].set_visible(False)
ax_temp.axis['right'].set_visible(True)
ax_temp.axis['right