我目前有一个数据框,其中包含从1990年到2014年(25行)的年份。我希望我的情节能够显示所有年份的X轴。我正在使用add_subplot,因为我打算在这个图中有4个图(所有图都有相同的X轴)。
创建数据框:
import pandas as pd
import numpy as np
index = np.arange(1990,2015,1)
columns = ['Total Population','Urban Population']
pop_plot = pd.DataFrame(index=index, columns=columns)
pop_plot = df_.fillna(0)
pop_plot['Total Population'] = np.arange(150,175,1)
pop_plot['Urban Population'] = np.arange(50,125,3)
我目前拥有的代码:
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(2,2,1, xticklabels=pop_plot.index)
plt.subplot(2, 2, 1)
plt.plot(pop_plot)
legend = plt.legend(pop_plot, bbox_to_anchor=(0.1, 1, 0.8, .45), loc=3, ncol=1, mode='expand')
legend.get_frame().set_alpha(0)
ax1.set_xticks(range(len(pop_plot.index)))
这是我得到的情节:
当我评论set_xticks时,我得到以下情节:
#ax1.set_xticks(range(len(pop_plot.index)))
我尝试了几个我在这里找到的答案,但我没有取得多大成功。
提前致谢。
答案 0 :(得分:1)
不清楚ax1.set_xticks(range(len(pop_plot.index)))
应该用于什么。它会将刻度设置为数字0,1,2,3等,而您的绘图应该在1990年到2014年之间。
相反,您希望将滴答数设置为数据的数字:
ax1.set_xticks(pop_plot.index)
完成更正的示例:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
index = np.arange(1990,2015,1)
columns = ['Total Population','Urban Population']
pop_plot = pd.DataFrame(index=index, columns=columns)
pop_plot['Total Population'] = np.arange(150,175,1)
pop_plot['Urban Population'] = np.arange(50,125,3)
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(2,2,1)
ax1.plot(pop_plot)
legend = ax1.legend(pop_plot, bbox_to_anchor=(0.1, 1, 0.8, .45), loc=3, ncol=1, mode='expand')
legend.get_frame().set_alpha(0)
ax1.set_xticks(pop_plot.index)
plt.show()