首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python中绘制密度贴图?

如何在python中绘制密度贴图?
EN

Stack Overflow用户
提问于 2014-06-09 20:04:27
回答 2查看 64.6K关注 0票数 30

我有一个.txt文件,其中包含2D地图中规则间隔点的x,y值,第三个坐标是该点的密度。

代码语言:javascript
复制
4.882812500000000E-004  4.882812500000000E-004  0.9072267
1.464843750000000E-003  4.882812500000000E-004   1.405174
2.441406250000000E-003  4.882812500000000E-004   24.32851
3.417968750000000E-003  4.882812500000000E-004   101.4136
4.394531250000000E-003  4.882812500000000E-004   199.1388
5.371093750000000E-003  4.882812500000000E-004   1278.898
6.347656250000000E-003  4.882812500000000E-004   1636.955
7.324218750000000E-003  4.882812500000000E-004   1504.590
8.300781250000000E-003  4.882812500000000E-004   814.6337
9.277343750000000E-003  4.882812500000000E-004   273.8610

当我在gnuplot中使用以下命令绘制此密度贴图时:

代码语言:javascript
复制
set palette rgbformulae 34,35,0
set size square
set pm3d map
splot "dens_map.map" u 1:2:(log10($3+10.)) title "Density map"`

这给了我一张美丽的图片:

现在我想用matplotlib得到同样的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-09 22:57:06

这里是我的目标是一个更完整的答案,包括选择颜色映射和颜色轴的对数归一化。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
x, y, z = np.loadtxt('data.txt', unpack=True)
N = int(len(z)**.5)
z = z.reshape(N, N)
plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),
        cmap=cm.hot, norm=LogNorm())
plt.colorbar()
plt.show()

我在这里假设你的数据可以通过一个简单的重塑转换成一个二维数组。如果不是这样,那么您需要更努力地获取这种形式的数据。如果你的数据位于一个网格上,那么在这里使用imshow而不是pcolormesh会更有效(就像它看起来那样)。上面的代码片段产生了下面的图像,非常接近您想要的结果:

票数 27
EN

Stack Overflow用户

发布于 2014-06-09 21:52:30

来自@HYRY的评论很好,但这是一个完整的最小有效答案(带图片!)是更好的。使用plt.pcolormesh

代码语言:javascript
复制
import pylab as plt
import numpy as np

# Sample data
side = np.linspace(-2,2,15)
X,Y = np.meshgrid(side,side)
Z = np.exp(-((X-1)**2+Y**2))

# Plot the density map using nearest-neighbor interpolation
plt.pcolormesh(X,Y,Z)
plt.show()

如果数据看起来像您的示例,numpy可以使用命令numpy.genfromtext加载它。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24119920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档