Python X轴比例与同一绘图上的2个数据集不匹配

Python X轴比例与同一绘图上的2个数据集不匹配,python,matplotlib,Python,Matplotlib,我有两个数据集,我正试图绘制在同一个图上。它们共享一个我用于X轴的公共列,但是我的一组数据每年收集一次,另一组每月收集一次,因此每个数据集中的数据点数量明显不同 Pyplot不是在同一个图形上绘制两个集合时所期望的每个集合的X值 当我绘制每年收集的数据集时,我得到: 当我绘制每月收集的数据集时,我得到: 但当我绘制两组叠加的图像(代码如下)时,我得到: t框架: 10003 Date 0 257 201401 1 216 201402 2 417 201403

我有两个数据集,我正试图绘制在同一个图上。它们共享一个我用于X轴的公共列,但是我的一组数据每年收集一次,另一组每月收集一次,因此每个数据集中的数据点数量明显不同

Pyplot不是在同一个图形上绘制两个集合时所期望的每个集合的X值

当我绘制每年收集的数据集时,我得到:

当我绘制每月收集的数据集时,我得到:

但当我绘制两组叠加的图像(代码如下)时,我得到:

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
因此,我按照第二次世界大战在评论中的建议,将日期列转换为日期时间对象:

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,是的