我想做一个这样的热图(如FlowingData所示):
源数据是datasets.flowingdata.com/ppg2008.csv" rel="noreferrer">here,但是可以使用随机数据和标签,即
import numpy
column_labels = list('ABCD')
row_labels = list('WXYZ')
data = numpy.random.rand(4,4)
在matplotlib中制作热图非常简单:
from matplotlib import pyplot as plt
heatmap = plt.pcolor(data)
我甚至发现了一个colormap参数,看起来很对:heatmap = plt.pcolor(data, cmap=matplotlib.cm.Blues)
但除此之外,我还不知道如何显示列和行的标签,以及如何以正确的方向显示数据(原点在左上角而不是左下角)。
试图操作heatmap.axes
(例如heatmap.axes.set_xticklabels = column_labels
)都失败了。我错过了什么?
主要问题是,首先需要设置x和y记号的位置。另外,使用matplotlib更面向对象的接口也很有帮助。即,直接与
axes
对象交互。希望能有所帮助。
现在已经晚了,但这里是我的flowingdata NBA热图的python实现。
更新时间:2014年1月4日
输出如下:
有一个ipython笔记本上面有这么多代码here。我从“溢出”中学到了很多,所以希望有人会觉得这很有用。
python seaborn模块基于matplotlib,生成了一个非常好的热图。
下面是seaborn的一个实现,它是为ipython/jupyter笔记本设计的。
输出如下: 我使用了matplotlib蓝色地图,但是我个人觉得默认的颜色非常漂亮。我使用matplotlib旋转x轴标签,因为找不到seaborn语法。正如grexor所指出的,有必要通过反复试验来指定尺寸(如图所示),我发现这有点令人沮丧。
正如Paul H所指出的,可以很容易地将这些值添加到热图中(annot=True),但在本例中,我认为这并没有改善这个数字。一些代码片段是从joelotz的优秀答案中提取的。
相关问题 更多 >
编程相关推荐