Python matplotlib y轴标签随fontsize更改而消失
我有以下代码来绘制数据帧的内容 使用pandas和matplotlib:Python matplotlib y轴标签随fontsize更改而消失,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有以下代码来绘制数据帧的内容 使用pandas和matplotlib: thedata = {'2013':[0.0,0.0] ,'2014':[0.0,0.0] ,'2015':[0.0,0.0] ,'2016':[1,0.0] ,'2017':[0.0,0.0] ,'2018':[1,0.0]} my_df = pd.DataFrame(thedata, index=['Green car
thedata = {'2013':[0.0,0.0]
,'2014':[0.0,0.0]
,'2015':[0.0,0.0]
,'2016':[1,0.0]
,'2017':[0.0,0.0]
,'2018':[1,0.0]}
my_df = pd.DataFrame(thedata, index=['Green cars','Red cars'])
plt.figure(figsize=(7,3))
my_ax = plt.gca()
my_ax.clear()
my_ax.yaxis.set_major_locator(MaxNLocator(integer=True))
my_df.transpose().plot(kind='bar'
, stacked=True
, ax=my_ax
).grid(True,'major','y')
my_ax.legend(loc=9, bbox_to_anchor=(0.5, -0.1), frameon=False, ncol=2, fontsize=12 )
plt.title('All the cars', fontsize = 12 )
my_ax.set_xticklabels(my_ax.get_xticklabels(),rotation='horizontal', fontsize=12)
# my_ax.set_yticklabels(my_ax.get_yticklabels(),fontsize=12)
最后一行被注释掉,以便显示输出。我想将y轴标签的字体大小增加到与x相同,但是当我取消注释该行并运行它时,y轴标签就消失了,那里什么也没有显示
为什么会发生这种情况,我该如何解决
编辑:-创建数据帧;pandas 0.23.0,matplotlib 2.2.2您在这里面临的问题是,在绘制图形之前,没有实际定义标签
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
fig, ax = plt.subplots()
ax.plot([1,3,4,2])
ax.xaxis.set_major_locator(MaxNLocator(integer=True))
ax.set_xticklabels(ax.get_xticklabels(),fontsize=12)
plt.show()
在访问这些标签之前,可以绘制图形
fig, ax = plt.subplots()
ax.plot([1,3,4,2])
ax.xaxis.set_major_locator(MaxNLocator(integer=True))
fig.canvas.draw()
ax.set_xticklabels(ax.get_xticklabels(),fontsize=12)
plt.show()
然而,为了改变标签的字体大小,人们宁愿使用
ax.tick_params(axis="x", labelsize=12)
或者将属性设置为标签,而不实际设置标签的内容。例如,通过setp
plt.setp(ax.get_xticklabels(), fontsize=12)
通过在代码中定义数据帧并说明正在使用哪个版本的matplotlib和pandas,您可以使这一点重现吗?请参阅。编辑后的帖子,其中包括此感谢您,此功能。请您解释一下为什么要使用tick_params()或setp()?如果您设置fontsize,两者都同样适合。不同之处在于,您不能通过
勾选参数设置每个属性。因此,例如,如果要更改标签的旋转模式
,则不能使用勾选参数
。如果要更改字体大小和旋转模式,最好使用带有setp
的单行。另一个理由是:当您没有导入pyplot时,您不会完全使用setp
。因此,在这种情况下,您可以使用tick_params
或使用循环的更长版本。我尝试了所有这些方法,但仍然无法设置我的ticks字体大小。请有人帮帮我。