【发布时间】:2017-10-15 13:31:40
【问题描述】:
我目前有一个数据框,其索引为 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)))
我尝试了几个在这里找到的答案,但都没有成功。
提前致谢。
【问题讨论】:
-
你为什么期望
range(len())会给出从 1900 开始的值? -
我不会。标签由 xticklabels=pop_plot.index 提供。
-
我不确定我能否理解这个问题。根据您的回复,我根本不了解
ax1.set_xticks(range(len(pop_plot.index))的预期功能。此外,如果不查看数据,就无法了解为什么您没有获得完整的年份。 -
很抱歉不清楚,英语不是我的主要语言。向您展示我的数据的最佳方式是什么?它是一个 csv 文件。从我读到的 ax1.set_xticks(range(len(pop_plot.index)) 将能够将 X 轴上的刻度数设置为与我的索引相同的长度。我想展示这些年来人口的变化情况。目前我只有 6 年的标签,但我希望它们都显示在图中。通过删除 xticklabels=pop_plot.index,X 轴上的标签更改为:1990、1995、2000、2005、2010 和 2015。范围是正确的,但仍然只显示了六个值。
-
通常您应该提供MCVE。在这种情况下,可能只是我没有抓住问题,但最好你可以发布一个可以在本地运行的示例来说明问题。
标签: python pandas matplotlib plot