【问题标题】:How to plot heat map in matplotlib with label at both side right and left如何在matplotlib中绘制热图,左右两侧都有标签
【发布时间】:2018-01-28 17:11:42
【问题描述】:

更新

我已经写下了如下所示的代码..

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv("data_1.csv",index_col="Group")
print df

fig,ax = plt.subplots(1)
heatmap = ax.pcolor(df)########
ax.pcolor(df,edgecolors='k')

cbar = plt.colorbar(heatmap)##########

plt.ylim([0,12])
ax.invert_yaxis()


locs_y, labels_y = plt.yticks(np.arange(0.5, len(df.index), 1), df.index)
locs_x, labels_x = plt.xticks(np.arange(0.5, len(df.columns), 1), df.columns)
ax.set_xticklabels(labels_x, rotation=10)
ax.set_yticklabels(labels_y,fontsize=10)
plt.show()

它接受下面给出的输入,并绘制一个带有左侧和底部两侧标签的热图..

GP1,c1,c2,c3,c4,c5
S1,21,21,20,69,30
S2,28,20,20,39,25
S3,20,21,21,44,21

我还想在数据右侧添加额外的标签,如下所示,并想绘制一个带有三个侧面标签的热图。左右上下。

GP1,c1,c2,c3,c4,c5
S1,21,21,20,69,30,V1
S2,28,20,20,39,25,V2
S3,20,21,21,44,21,V3

我应该在代码中加入哪些更改。

请帮忙..

【问题讨论】:

标签: python matplotlib matplotlib-basemap


【解决方案1】:

您可以在绘图右侧创建一个新轴,称为twinx。然后你需要基本上调整这个轴,就像你对第一个轴所做的那样。

u = u"""GP1,c1,c2,c3,c4,c5
S1,21,21,20,69,30
S2,28,20,20,39,25
S3,20,21,21,44,21"""

import io
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df= pd.read_csv(io.StringIO(u),index_col="GP1")

fig,ax = plt.subplots(1)
heatmap = ax.pcolor(df, edgecolors='k')

cbar = plt.colorbar(heatmap, pad=0.1)

bx = ax.twinx()

ax.set_yticks(np.arange(0.5, len(df.index), 1))
ax.set_xticks(np.arange(0.5, len(df.columns), 1), )
ax.set_xticklabels(df.columns, rotation=10)
ax.set_yticklabels(df.index,fontsize=10)
bx.set_yticks(np.arange(0.5, len(df.index), 1))
bx.set_yticklabels(["V1","V2","V3"],fontsize=10)
ax.set_ylim([0,12])
bx.set_ylim([0,12])
ax.invert_yaxis()
bx.invert_yaxis()

plt.show()

【讨论】:

  • 是否有任何方法可以移动或设置颜色条的位置,因为在我的情况下,右侧的原始标签与参考颜色条重叠。
  • 在上面的代码中,选择了pad=0.1 的填充。如果您愿意,可以更改该值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 2015-03-22
  • 2021-01-14
  • 2020-05-11
相关资源
最近更新 更多