在python中使用imshow中的“真实值”

时间:2015-11-11 12:15:15

标签: python pandas matplotlib imshow

我想使用imshow()模块绘制热图,但我正在努力让它以我想要的方式工作。我的数据存储在pandas数据框中,该数据框由100-1000列组成,每列包含201行。每列中的第一行是我想在x轴上使用的值,而剩余的200行是要在imshow图中使用的数据点。

这是我的数据帧的结构(值最终从0.0000增加): enter image description here

第一列只是0-200之间的一个计数器 - 我加载数据时通常会删除它,因为它与行索引相同。我目前遇到的问题是在情节中,当我使用imshow()来绘制我的图时,它使用行和列索引作为轴标记。这对我的Y轴很好,因为它与第0列中的值相同;问题在于X轴的索引值在1-1000之间,而我想在轴上绘制实际值为X(即381.3,393.3,200.6等)。我怎么能做到这一点?

目前这是我得到的: enter image description here

以下是我目前使用的代码:

rawData = pd.read_csv('heme_mpc_drift2.csv', delimiter=',')
rawData_drop=rawData.drop(rawData[[101,102]], axis=1, inplace=False)
xaxis = rawData_drop.ix[0,1:]
yaxis = rawData_drop.ix[1:,0]
plt.figure(figsize=[10,5])
plt.ylim([200,0])
plt.imshow(rawData_drop, cmap=cmaps.plasma, interpolation="none", aspect='auto', vmax=500000)
plt.colorbar()
plt.show()

我希望在xaxis的某个地方使用yaxisimshow(),但是还没弄明白在哪里。我尝试在extent中使用imshow(),但它只将值范围从1-100转换为我给它的任何新范围。

我很感激任何建议。

编辑1: 添加了我正在寻找的示例: enter image description here

1 个答案:

答案 0 :(得分:0)

它与imshow无关,只需在xticks对象上调用plt

plt.xticks(range(len(xaxis)), xaxis, size='small')

更新

为了使你的x轴也与数值成比例,同时每次观察只是一个点我建议根本不使用imshow。您正在寻找的图表实际上是散点图图,因为与整个图像相比,您有非常少的数据点。 Imshow通常用于密集图

一旦用你的x值喂养,

plt.scatter显然会自行缩放。您也可以将其设置为黑色背景等。事实上,您所包含的示例看起来像带有像素范围标记的散点图。