Matplotlib Plot 和 Colorbar 问题

Matplotlib Plot and Colorbar issues

我有下面的情节,但是,我正在努力解决下面的 3 个问题....

  1. 如何将 X 轴标签 (1-31) 移动到图的顶部?
  2. 如何将颜色条的格式从(7000 更改为 7k 等)
  3. 如何将颜色从灰色更改为其他 cmap,如“红色”?
  4. 我可以更改图形大小吗? plt.figure(figsize=(20,10)) 不起作用?

data1 = pd.read_csv("a2data/data1.csv")
data2 = pd.read_csv("a2data/data2.csv")
merged_df = pd.concat([data1, data2])
merged_df.set_index(['month', 'day'], inplace=True)
merged_df.sort_index(inplace=True)
merged_df2=merged_df.groupby(['month', 'day']).deaths.mean().unstack('day')   
plt.imshow(merged_df2)
plt.xticks(np.arange(merged_df2.shape[1]), merged_df2.columns)
plt.yticks(np.arange(merged_df2.shape[0]), merged_df2.index)
plt.colorbar(orientation="horizontal")
plt.show()

试试这个来反转 y 轴:

ax = plt.yticks(np.arange(merged_df2.shape[0]), merged_df2.index)
plt.colorbar(orientation="horizontal")
ax.invert_yaxis()
plt.show()

我认为对于颜色,您可以在 pyplot 文档中找到更好的,https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot

让我们试试:

# create a single subplot to access the axis
fig, ax = plt.subplots()

# passing the `cmap` for custom color
plt.imshow(df, cmap='hot', origin='upper')

# draw the colorbar
cb = plt.colorbar(orientation="horizontal")

# extract the ticks on colorbar
ticklabels = cb.get_ticks()

# reformat the ticks
cb.set_ticks(ticklabels)
cb.set_ticklabels([f'{int(x//1000)}K' for x in ticklabels])

# move x ticks to the top
ax.xaxis.tick_top()

plt.show()

输出: