Python X轴比例与同一绘图上的2个数据集不匹配
我有两个数据集,我正试图绘制在同一个图上。它们共享一个我用于X轴的公共列,但是我的一组数据每年收集一次,另一组每月收集一次,因此每个数据集中的数据点数量明显不同 Pyplot不是在同一个图形上绘制两个集合时所期望的每个集合的X值 当我绘制每年收集的数据集时,我得到: 当我绘制每月收集的数据集时,我得到: 但当我绘制两组叠加的图像(代码如下)时,我得到: t框架:Python X轴比例与同一绘图上的2个数据集不匹配,python,matplotlib,Python,Matplotlib,我有两个数据集,我正试图绘制在同一个图上。它们共享一个我用于X轴的公共列,但是我的一组数据每年收集一次,另一组每月收集一次,因此每个数据集中的数据点数量明显不同 Pyplot不是在同一个图形上绘制两个集合时所期望的每个集合的X值 当我绘制每年收集的数据集时,我得到: 当我绘制每月收集的数据集时,我得到: 但当我绘制两组叠加的图像(代码如下)时,我得到: t框架: 10003 Date 0 257 201401 1 216 201402 2 417 201403
10003 Date
0 257 201401
1 216 201402
2 417 201403
3 568 201404
4 768 201405
5 836 201406
6 798 201407
7 809 201408
8 839 201409
9 796 201410
10003 Date
0 257 2014-01-31
1 216 2014-02-28
2 417 2014-03-31
3 568 2014-04-30
4 768 2014-05-31
5 836 2014-06-30
6 798 2014-07-31
7 809 2014-08-31
8 839 2014-09-30
9 796 2014-10-31
针对zip数据的税收:
TAX BRACKET $1 under $25,000 ... Date
2 5740 ... 201301
0 5380 ... 201401
1 5320 ... 201501
3 5030 ... 201601
TAX BRACKET $1 under $25,000 ... Date
2 5740 ... 2013-01-31
0 5380 ... 2014-01-31
1 5320 ... 2015-01-31
3 5030 ... 2016-01-31
因此,我按照第二次世界大战在评论中的建议,将日期列转换为日期时间对象:
t框架:
10003 Date
0 257 201401
1 216 201402
2 417 201403
3 568 201404
4 768 201405
5 836 201406
6 798 201407
7 809 201408
8 839 201409
9 796 201410
10003 Date
0 257 2014-01-31
1 216 2014-02-28
2 417 2014-03-31
3 568 2014-04-30
4 768 2014-05-31
5 836 2014-06-30
6 798 2014-07-31
7 809 2014-08-31
8 839 2014-09-30
9 796 2014-10-31
针对zip数据的税收:
TAX BRACKET $1 under $25,000 ... Date
2 5740 ... 201301
0 5380 ... 201401
1 5320 ... 201501
3 5030 ... 201601
TAX BRACKET $1 under $25,000 ... Date
2 5740 ... 2013-01-31
0 5380 ... 2014-01-31
1 5320 ... 2015-01-31
3 5030 ... 2016-01-31
但日期仍在绘制偏移,
我的所有数据都不能追溯到2012年——2013年1月是最早的。zip_数据的税_均由一年抵消。如果我只画那个集,它就画得很好。
fig,ax1=plt.子批(sharex=True)
color=“选项卡:红色”
ax1.set_xlabel('Date')
ax1.set_ylabel('Trips',color=color)
tframe.plot(种类='line',x='Date',y=“10003”,ax=ax1,颜色=颜色)
ax1.勾选参数(轴='y',标签颜色=颜色)
ax2=ax1.twinx()
color=“选项卡:蓝色”
ax2.set_ylabel('Num Returns',color=color)
用于zip数据的tax\u。绘图(种类='行',x='日期',y=用于zip数据的tax\u。列[:-1],ax=ax2)
ax2.勾选参数(轴='y',标签颜色=颜色)
plt.show()
如果可以将数据帧索引设置为日期时间索引,则绘图更容易
s = '''10003 Date
257 201401
216 201402
417 201403
568 201404
768 201405
836 201406
798 201407
809 201408
839 201409
796 201410
'''
df1 = pd.read_csv(io.StringIO(s), delimiter='\s{2,}',engine='python')
df1.index = pd.to_datetime(df1['Date'],format='%Y%m')
s = '''TAX BRACKET $1 under $25,000 Date
2 5740 201301
0 5380 201401
1 5320 201501
3 5030 201601
'''
df2 = pd.read_csv(io.StringIO(s), delimiter='\s{2,}',engine='python')
df2.index = pd.to_datetime(df2['Date'],format='%Y%m')
您不需要为plot
的x
参数指定参数
fig, ax1 = plt.subplots(sharex = True)
color = "tab:red"
ax1.set_xlabel('Date')
ax1.set_ylabel('Trips', color = color)
df1.plot(kind = 'line',y="10003", ax = ax1, color = color)
ax1.tick_params(axis = 'y', labelcolor = color)
ax2 = ax1.twinx()
color = "tab:blue"
ax2.set_ylabel('Num Returns', color = color)
df2.plot(kind = 'line', y='$1 under $25,000', ax = ax2)
ax2.tick_params(axis = 'y', labelcolor = color)
plt.show()
plt.close()
请阅读。如果没有可复制的代码,人们很难帮助您。xaxis列数据字符串是/是?你能给出一个你试图绘制的数据的最小示例吗?如果x轴数据是日期时间对象,则应正确缩放。这可能是一个重复的问题。搜索
matplotlib xaxis datetime
。添加数据,并在实施建议后继续提问。您的数据是数据帧吗?@wwii,是的