from mpl_toolkits.axisartist.parasite_axes import HostAxes, ParasiteAxes import matplotlib.pyplot as plt import numpy as np # 图层可分为四种 # # Canvas层 画布层 位于最底层,用户一般接触不到。 matplotlib.pyplot就是一个canvas层 # Figure层 图像层 建立在Canvas之上。 plt.figure()就是一个figure层 # Axes层 坐标层 建立在Figure之上。fig.add_axes(ax)就加一个Axes层ax在figure上,这时就可以画出一个空白的坐标了。 # plot层 绘制层 坐标轴、图例等辅助信息层以及图像层都是建立在Axes之上 #定义一个画图,确定画图区域(画线区域不包括坐标轴和标题部分) def pltmlty(data1x,data1y,data2x,data2y,data3x,data3y,data4x,data4y,data5x,data5y): fig = plt.figure() #定义figure,(1)中的1是什么 ax_cof = HostAxes(fig, [0.1, 0.1, 0.8, 0.8]) #用[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) #设置主坐标系的上右轴不显示,主轴的y坐标系在左边 #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'].major_ticklabels.set_visible(True)#刻度 ax_temp.axis['right'].label.set_visible(True)#标题 #set label for axis ax_cof.set_ylabel('cof') ax_cof.set_xlabel('Distance (m)') ax_temp.set_ylabel('Temperature') ax_load.set_ylabel('load') ax_cp.set_ylabel('CP') ax_wear.set_ylabel('Wear') #设置多个y轴的位置,其中的字典自己定义 load_axisline = ax_load.get_grid_helper().new_fixed_axis cp_axisline = ax_cp.get_grid_helper().new_fixed_axis wear_axisline = ax_wear.get_grid_helper().new_fixed_axis ax_load.axis['rightpp'] = load_axisline(loc='right', axes=ax_load, offset=(40,0)) ax_cp.axis['right3'] = cp_axisline(loc='right', axes=ax_cp, offset=(80,0)) ax_wear.axis['right4'] = wear_axisline(loc='right', axes=ax_wear, offset=(120,0)) #主图添加到图布 fig.add_axes(ax_cof) ''' #set limit of x, y ax_cof.set_xlim(0,2) ax_cof.set_ylim(0,3) ''' #画图 curve_cof, = ax_cof.plot(data1x, data1y, label="CoF", color='black') curve_temp, = ax_temp.plot(data2x, data2y, label="Temp", color='red') curve_load, = ax_load.plot(data3x, data3y, label="Load", color='green') curve_cp, = ax_cp.plot(data4x, data4y, label="CP", color='pink') curve_wear, = ax_wear.plot(data5x, data5y, label="Wear", color='blue') #设置坐标系范围 # ax_temp.set_ylim(0,4) # ax_load.set_ylim(0,4) # ax_cp.set_ylim(0,50) # ax_wear.set_ylim(0,30) #显示所有legend ax_cof.legend() #轴名称,刻度值的颜色 #ax_cof.axis['left'].label.set_color(ax_cof.get_color()) ax_temp.axis['right'].label.set_color('red') ax_load.axis['rightpp'].label.set_color('green') ax_cp.axis['right3'].label.set_color('pink') ax_wear.axis['right4'].label.set_color('blue') #刻度颜色 ax_temp.axis['right'].major_ticks.set_color('red') ax_load.axis['rightpp'].major_ticks.set_color('green') ax_cp.axis['right3'].major_ticks.set_color('pink') ax_wear.axis['right4'].major_ticks.set_color('blue') #刻度标签颜色 ax_temp.axis['right'].major_ticklabels.set_color('red') ax_load.axis['rightpp'].major_ticklabels.set_color('green') ax_cp.axis['right3'].major_ticklabels.set_color('pink') ax_wear.axis['right4'].major_ticklabels.set_color('blue') #y轴线颜色 ax_temp.axis['right'].line.set_color('red') ax_load.axis['rightpp'].line.set_color('green') ax_cp.axis['right3'].line.set_color('pink') ax_wear.axis['right4'].line.set_color('blue')
Python-Matplotlib折线图绘制----y轴刻度不同 <lpliner>-python黑洞网