我想使用imshow()
模块绘制热图,但我正在努力让它以我想要的方式工作。我的数据存储在pandas
数据框中,该数据框由100-1000列组成,每列包含201行。每列中的第一行是我想在x轴上使用的值,而剩余的200行是要在imshow
图中使用的数据点。
第一列只是0-200之间的一个计数器 - 我加载数据时通常会删除它,因为它与行索引相同。我目前遇到的问题是在情节中,当我使用imshow()
来绘制我的图时,它使用行和列索引作为轴标记。这对我的Y轴很好,因为它与第0列中的值相同;问题在于X轴的索引值在1-1000之间,而我想在轴上绘制实际值为X(即381.3,393.3,200.6等)。我怎么能做到这一点?
以下是我目前使用的代码:
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
的某个地方使用yaxis
和imshow()
,但是还没弄明白在哪里。我尝试在extent
中使用imshow()
,但它只将值范围从1-100转换为我给它的任何新范围。
我很感激任何建议。
答案 0 :(得分:0)
它与imshow
无关,只需在xticks
对象上调用plt
plt.xticks(range(len(xaxis)), xaxis, size='small')
为了使你的x轴也与数值成比例,同时每次观察只是一个点我建议根本不使用imshow。您正在寻找的图表实际上是散点图图,因为与整个图像相比,您有非常少的数据点。 Imshow通常用于密集图。
一旦用你的x值喂养, plt.scatter
显然会自行缩放。您也可以将其设置为黑色背景等。事实上,您所包含的示例看起来像带有像素范围标记的散点图。