我有以下pyplot子程序。所有数据都正确传递给子程序。但是,我无法控制两件事: 1 - 我无法使正确的刻度消失 2 - 我不能在右轴上放置第二个y标签
我添加了一个示例图片,其中包含我正在尝试删除的正确标记,并且还尝试添加右侧y轴标签。
非常感谢!
{{1}}
答案 0 :(得分:1)
你正在创造4个双轴。你直接松开了对其中2个的引用。回到它们的句柄来设置它们的(tick-)标签是相当复杂的。
虽然你打算做什么有点神秘,但从情节来看,你只需要两个轴,
fig, ax = plt.subplots()
ax2 = ax.twinx()
然后,您可以将堆积的绘图绘制为ax
,将绘图绘制为ax2
。
以常规方式设置两个轴中的任意一个的ylabel
ax2.set_ylabel("titleYlabel2", fontsize=14)
(ax
相同)。删除ticklabel可以用
ax2.set_yticklabels([])
或
ax2.tick_params(labelright='off')
或者删除完整的刻度线就像
一样ax2.set_yticks([])
答案 1 :(得分:0)
嗯,多一点修补,现在我得到了我想要的结果。我删除了ax2 = twiny(),现在使用ax2 = twinx()。
如果有兴趣,我可以发布代码来说明。
再次感谢您的帮助。
答案 2 :(得分:0)
好的,我正在学习stackoverflow.com的机制。我包括matplotlib子程序,以及我希望实现它的输出示例。 def makeChart(dataToGraph,titleForGraph,titleYlabel,titleYlabel2,legendLabels,yMax,yMin,dataSource):
fig, ax = plt.subplots()
ax2 = ax.twinx()
colorZ2 = ('#002060', 'red')
colorZ1 = ( '#92D050', 'purple')
p1 = plt.Rectangle((0, 0), 1, 1, fc='red')
p2 = plt.Rectangle((0, 0), 1, 1, fc='#002060')
p3 = plt.Line2D([], [], color='black', linewidth=4)
p4 = plt.Rectangle((0, 0), 1, 1, fc='#92D050')
p5 = plt.Rectangle((0, 0), 1, 1, fc='purple')
dates, series1, series2, series3, series4, series5 = zip(*dataToGraph)
ax.stackplot(dates, series1, series2, colors=colorZ1)
ax.stackplot(dates, series3, series4, colors=colorZ2)
ax.plot(dates, series5, c='black', lw=3)
ax.set_ylabel(titleYlabel, fontsize=14)
ax2.tick_params(labelright='off')
ax2.set_ylabel(titleYlabel2, fontsize=14)
ax.legend([p5, p4, p3, p2, p1 ], [legendLabels[4],legendLabels[3],legendLabels[2],legendLabels[1],legendLabels[0]], loc='upper left', shadow=True)
plt.title('\n'.join(wrap(titleForGraph,50)), fontsize=14)
y_format = tkr.FuncFormatter(numFunc)
ax.yaxis.set_major_formatter(y_format)
props = dict(boxstyle='square', facecolor='none' )
fig.text(.999, 0.01, 'EPRINC', style='oblique', ha='right', fontsize=10, bbox=props)
fig.text(.001, 0.01, dataSource, style='oblique', ha='left', fontsize=10, bbox=props)
ax.grid(True)
fig.autofmt_xdate()
plt.show()
def numFunc(x,pos):#formatter函数采用刻度标签和刻度位置 s =' {:0,d}' .format(int(x)) 返回s