如何使用matplotlib缩放数字

时间:2019-03-13 14:32:02

标签: python matplotlib

我创建了两个具有不同数据大小的图形。因此,图2的y轴比另一个的y轴更伸展(图1),结果,图2的宽度更小。 如何将两个数字缩放为相等大小?

Figure 1

我用于图1的代码如下:

df.index = pd.to_datetime(df.index, format='%d-%m-%y')
fig=plt.imshow(df, cmap='YlOrBr', interpolation='nearest', 
vmin=0, vmax=12)

l1 = pd.to_datetime(df.index).month
l2 = pd.to_datetime(df.columns).hour
x = pd.Series(l2).drop_duplicates()
y = pd.Series(l1).drop_duplicates()

plt.xticks(x.index,('00:00', '01:00', '02:00', '03:00', '04:00', 
'05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', 
'13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', 
'21:00', '22:00', '23:00'), rotation=90)
plt.yticks(y.index,('', 'Mar `18 ', 'Feb `18', 'Jan `18', 'Dec `17', 
'Nov `17'))
plt.colorbar()
plt.xlabel("Time (UTC)")
plt.ylabel("Date")
plt.title("title")
plt.savefig('fig.svg', dpi=1200)
plt.show()

Figure 2

我用于图2的代码如下:

df.index = pd.to_datetime(df.index, format='%d-%m-%y')
fig=plt.imshow(df, cmap='YlOrBr', interpolation='nearest', 
vmin=0, vmax=12)

l11 = pd.to_datetime(df.index).month
l12 = pd.to_datetime(df.columns).hour
x = pd.Series(l12).drop_duplicates()
y = pd.Series(l11).drop_duplicates()

plt.xticks(x.index,('00:00', '01:00', '02:00', '03:00', '04:00', 
'05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', 
'13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', 
'21:00', '22:00', '23:00'), rotation=90)
plt.yticks(y.index,('', 'Oct `18 ', 'Sep `18', 'Aug `18', 'Jul `18', 
'Jun `18', 'May `18', 'Apr `18'))
plt.colorbar()
plt.xlabel("Time (UTC)")
plt.ylabel("Date")
plt.title("title")
plt.savefig('df.svg', dpi=1200)
plt.show()

1 个答案:

答案 0 :(得分:0)

使用matplotlib的面向对象语法,可以在图形初始化时设置图形大小:

fig = plt.figure(0, figsize=(10, 8))
ax = fig.subplots(nrow=1, ncols=1)

ax.imshow(df, cmap='YlOrBr', interpolation='nearest', vmin=0, vmax=12)

某些命令的名称在面向对象的语法中略有不同。 plt.xticks变为ax.set_xticksax.set_xticklabelsplt.xlabel成为ax.set_xlabel