def plot_multi_y(line_series_list, line_label_list, scatter_series_list, scatter_label_list): """ 第一条line做主轴,散点与主轴共用Y轴 :param line_series_list: :param line_label_list: :param scatter_series_list: :param scatter_label_list: :return: """ color_list = ['red', 'green', 'blue', 'yellow', 'pink', 'black', 'orange'] fig = plt.figure(1) host_axes = HostAxes(fig, [0.1, 0.1, 0.6, 0.8]) fig.add_axes(host_axes) host_axes.set_ylabel(line_label_list[0]) host_axes.axis['right'].set_visible(False) host_axes.set_ylim( min(line_series_list[0][1]) * 0.9, max(line_series_list[0][1]) * 1.1) host_axes.plot(line_series_list[0][0], line_series_list[0][1], label=line_label_list[0], color=color_list[0]) label_offset = 0 # line_axes = [] for i in range(len(line_series_list) - 1): axes = ParasiteAxes(host_axes, sharex=host_axes) axes.set_ylabel(line_label_list[i + 1]) axis_line = axes.get_grid_helper().new_fixed_axis axes.axis['right' + str(label_offset)] = axis_line( loc='right', axes=axes, offset=(label_offset, 0)) axes.axis['right' + str(label_offset)].label.set_color(color_list[i + 1]) axes.axis['right' + str(label_offset)].major_ticks.set_color( color_list[i + 1]) axes.axis['right' + str(label_offset)].major_ticklabels.set_color( color_list[i + 1]) axes.axis['right' + str(label_offset)].line.set_color(color_list[i + 1]) label_offset += 40 axes.set_ylim( min(line_series_list[i + 1][1]) * 0.9, max(line_series_list[i + 1][1]) * 1.1) axes.plot(line_series_list[i + 1][0], line_series_list[i + 1][1], label=line_label_list[i + 1], color=color_list[i + 1]) # line_axes.append(axes) host_axes.parasites.append(axes) # scatter_axes = [] for i in range(len(scatter_series_list)): # 与主轴共用Y轴 # axes = ParasiteAxes(host_axes, sharex=host_axes) # axes.set_ylabel(scatter_label_list[i]) # axis_line = axes.get_grid_helper().new_fixed_axis # axes.axis['right' + str(label_offset)] = axis_line(loc='right', axes=axes, offset=(label_offset, 0)) color_item = color_list[len(line_label_list) + i + 1] # axes.axis['right' + str(label_offset)].label.set_color(color_item) # axes.axis['right' + str(label_offset)].major_ticks.set_color(color_item) # axes.axis['right' + str(label_offset)].major_ticklabels.set_color(color_item) # axes.axis['right' + str(label_offset)].line.set_color(color_item) # label_offset += 40 # axes.set_ylim(min(scatter_series_list[i][1]), max(scatter_series_list[i][1])) host_axes.scatter(scatter_series_list[i][0], scatter_series_list[i][1], label=scatter_label_list[i], color=color_item) # scatter_axes.append(axes) # host_axes.parasites.append(axes) host_axes.legend() plt.show()
>>>>>>> f5b55f5735c94ec9573668b5d56b78a8eef2e8f7 offset = (60, 0) new_axisline = par2._grid_helper.new_fixed_axis par2.axis['right2'] = new_axisline(loc='right', axes=par2, offset=offset) fig.add_axes(host) host.set_xlim(0, fm + 1) <<<<<<< HEAD host.set_ylim(0, hm + 5) host.set_xlabel('流量') host.set_ylabel('功率') host.set_ylabel('效率') x = np.linspace(0, fm, 500) y = headparameters[0] * x ** 2 + headparameters[1] * x + headparameters[2] p1, = host.plot(x, y, label="HQ拟合曲线", color="black") host.scatter(flow1, head1, label="HQ离散数据") x1 = np.linspace(0, fm, 500) y1 = powerparameters[0] * x ** 2 + powerparameters[1] * x + powerparameters[2] p2, = par1.plot(x, y1, label="PQ拟合曲线", color="red") par1.scatter(flow1, power1, label="PQ离散数据") x2 = np.linspace(0, fm, 500) y2 = effectparameters[0] * x ** 2 + effectparameters[1] * x + effectparameters[2] p3, = par2.plot(x, y2, label="EQ拟合曲线", color="blue") par2.scatter(flow1, effect, label="EQ离散数据") par1.set_ylim(0, pm * 2) par2.set_ylim(0, nm + 5) host.legend() par2.axis['right2'].major_ticklabels.set_color(p3.get_color()) # 刻度值颜色 par2.axis['right2'].set_axisline_style('-|>', size=1.5) # 轴的形状色 =======