Python - MatPlotLib.PyPlot - 从右轴删除刻度线

时间:2017-03-22 17:30:09

标签: python matplotlib

我有以下pyplot子程序。所有数据都正确传递给子程序。但是,我无法控制两件事: 1 - 我无法使正确的刻度消失 2 - 我不能在右轴上放置第二个y标签

我添加了一个示例图片,其中包含我正在尝试删除的正确标记,并且还尝试添加右侧y轴标签。

非常感谢!

{{1}}

enter image description here

3 个答案:

答案 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

Not sure where the image went; but it's a supply/demand balance view of the U.S. Residual fuel market