用Python创建信息图

Mat*_*ock 6 python grid charts matplotlib heatmap

我想在python中创建一个简单的信息图。Matplotlib似乎具有很多功能,但是没有什么可以掩盖我简单的热图网格示例。

信息图表是一个简单的5 x 5网格,其内部数字范围为0到1。然后,网格正方形将被着色为0 =白色1 =蓝色0.5(浅蓝色)。

Matplotlib可能可以使用,但我找不到或合并任何可以提供有关生成此结果的见解的示例。

任何见解,示例代码或库指导都将真正有帮助

关于马特

Red*_*yph 4

这取决于您获得图形后需要对其进行的操作,Matplotlib允许您在屏幕上以交互方式显示图形,将其保存为矢量、pdf 或位图格式等。

如果您选择这个框架,imshow将会做您需要的事情,这里是一个例子:

# Just some data to test:
from random import gauss
a = [[gauss(0, 10) for i in xrange(0, 5)] for j in xrange(0,5)]

from pylab import * # or just launch "IPython -pylab" from the command line

# We create a custom colormap:
myblue = cm.colors.LinearSegmentedColormap("myblue", {
    'red':   [(0, 1, 1), (1, 0, 0)], 
    'green': [(0, 1, 1), (1, 0, 0)],
    'blue':  [(0, 1, 1), (1, 1, 1)]})

# Plotting the graph:
imshow(a, cmap=myblue)
Run Code Online (Sandbox Code Playgroud)

有关颜色图的更多详细信息,请检查此链接,这里是imshow 的链接- 或者只需使用help(colors.LinearSegmentedColormap)help(imshow)

替代文本 http://img522.imageshack.us/img522/6230/bluep.png

(请注意,这是使用标准选项的结果,您可以添加网格、更改过滤等)。


编辑

但是我希望在网格中显示数字

为了简单起见:

for i in xrange(0,5):
    for j in xrange(0,5):
        text(i, j,
             "{0:5.2f}".format(a[i][j]),
             horizontalalignment="center",
             verticalalignment="center")
Run Code Online (Sandbox Code Playgroud)