如何在matplotlib中绘制热图,并在左右两侧标注标签

时间:2018-01-28 17:11:43

标签: python matplotlib matplotlib-basemap

更新

我写了一个像给定的下面的代码..

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()

其中输入如同给定的波纹管并绘制热图与左侧和底部的两侧leabel ..

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

我应该将哪些更改纳入代码。

请帮助..

1 个答案:

答案 0 :(得分: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()

enter image description here