在两侧创建多个yaxis

2024-06-18 02:05:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个左右两侧都有多个y轴的图形。在

下面的代码生成一个右侧有多个y轴的图形。我试过将rspline设置改为“left”,但不起作用。在

我怎么在左边加y4?在

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams
%matplotlib inline
x = np.random.rand(20)
y1 = x*5
y2 = x*5 + 0.2
y3 = x*x*3.5 + 0.2*x
y4 = x*5 + 0.2*x
yLimMin = 0
yLimMax = 2.1
lineWidth = 1.0
fontSize = 24
subTitle = ""

plt.rcParams.update({'axes.labelsize': 'small'})
fig = plt.figure(figsize=(21,29.7))
ax11 = fig.add_subplot(411)

subplotAdjustRight = 0.90
mks = 19 # marker step
ax11.plot(x,y1, linestyle='-', linewidth=lineWidth, color = 'k',
          marker='*', markevery=11*mks, 
          label="CO")
ax11.set_ylabel('CO [%]', color='k')
plt.ylim((0,5))
fig.suptitle(subTitle, fontsize = fontSize)
ax11.yaxis.grid()
plt.locator_params(axis='y', nbins=10)
ax12=ax11.twinx()
ax12.plot(x,y2,linestyle='-', linewidth=lineWidth, color='r',
          marker='*', markevery=11*mks, 
          label="CO22")
ax12.set_ylabel('NO [%]', color='r')
plt.ylim((0,10))
plt.locator_params(axis='y', nbins=10)

ax13= ax11.twinx()
rspine = ax13.spines['right']
rspine.set_position(('axes', 1.05))
ax13.set_frame_on(True)
ax13.plot(x,y3,linestyle='-', linewidth=lineWidth, color='m',
          marker='*', markevery=11*mks, 
          label="CO222")
ax13.set_ylabel('O [%] ', color='m')
plt.ylim((0,20))
plt.locator_params(axis='y', nbins=10)

results


Tags: importplotmatplotlibasfigpltmarkercolor
1条回答
网友
1楼 · 发布于 2024-06-18 02:05:48

逻辑总是一样的。创建双轴并偏移脊椎。创建应显示在绘图左侧的轴时,唯一的区别是需要告诉matplotlib将记号和ticklabel设置为左侧(因为默认情况下,双轴将其设置为右侧)。在

ax14= ax11.twinx()
ax14.yaxis.tick_left()
rspine = ax14.spines['left']
rspine.set_position(('axes', -0.15))
ax14.set_ylabel('blubb ', color='limegreen')
ax14.yaxis.set_label_position("left")

enter image description here

相关问题 更多 >