python - 在两侧创建多个 y 轴

标签 python matplotlib

我想创建一个左侧和右侧都有多个 y 轴的图表。

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

如何在左侧添加 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

最佳答案

逻辑总是相同的。您创建一个双轴并偏移脊柱。创建应出现在图左侧的轴时的唯一区别是,您需要告诉 matplotlib 将刻度和刻度标签设置在左侧(因为默认情况下,双轴将它们设置在右侧)。

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

关于python - 在两侧创建多个 y 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105333/

相关文章:

python - 在 Python 中将字符串列表转换为整数(或 double )

python - 从预训练模型中可视化样本的优缺点

python - 如何在 Python 上通过方程绘制椭圆?

python - Matplotlib 在 GUI 中崩溃

python - 在 python 中使用 matplotlib 设置刻度位置时出错

python - 突出显示 Seaborn 热图中的一行

Python JSON 从响应中获取数据

python - 如何处理多个异常?

python - Django Rest Framework 不从条件返回响应代码

python - Matplotlib 颜色条显示数字