【发布时间】:2017-09-11 19:54:29
【问题描述】:
我无法在同一级别显示第 1、第 2、第 3 y 轴的主要刻度。看下图就知道了:
y-left 轴有 10 个 bin (grid on)
第一个 y-right 轴只有 7 个 bin,其主要刻度未对齐 与y-left轴的那些
- 第二个 y-right 轴只有 9 个 bin,它的主要刻度不与 y-left 轴或第一个 y-right 轴对齐。
我在这里找到了建议使用“locator_parameters”的主题:
plt.locator_params(axis='y', nbins=10)
但我还没有设法使它适用于我的情况。我想为所有 y 轴设置 10 个 bin,并且我希望对齐主要刻度。
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()
ax11.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,13))
ax12.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,22))
ax13.locator_params(axis='y', nbins=10)
【问题讨论】:
-
“同级”是什么意思?请在您遇到的实际问题上多说半句话。
-
感谢您的意见。我已经为我的问题添加了更多信息。
-
我明白了。 this question 有帮助吗?
-
谢谢,stackoverflow.com/questions/20243683/… 提供了帮助,因为我需要遍历情节并创建 100 多个图形。明天仍然需要检查我的全部数据,但它似乎适用于这个例子。
标签: python matplotlib plot axis-labels