【问题标题】:Create Contour or Heat Map with 3 Columns of Data使用 3 列数据创建等高线或热图
【发布时间】:2017-07-16 01:23:05
【问题描述】:

我在文件“data.txt”中有 3 列用逗号分隔的数据

x,y,z
12,12,5.2
12,26,12.1
12,40,3.5

其中 x 和 y 是 (x,y) 坐标(范围 12-2000),z 是该点的值/强度。绘制这些数据的最佳方式是什么?

我最初的想法是绘制 3-D 等高线图并沿 Z 轴查看它,但即使这样也给我带来了一些问题。我已经将其绘制为一个数组并使用 imshow 进行绘制,但我知道有更好的方法。你有什么建议?

附加的是我使用 imshow 的输出。它有效,但它是有限的,因为我需要尽快改变我的轴。

这是我当前的代码,但我知道有些地方需要更改

fig = plt.figure(2)
cmap2 = colors.LinearSegmentedColormap.from_list('my_colormap',['red','yellow','green'],256)
img2 = plt.imshow(data1,interpolation='nearest',cmap = cmap2, norm=MidpointNormalize(midpoint=p50)
        ,extent=[0.0009,3621085,0.0009,3621085], origin='lower')
cbar=plt.colorbar(img2,cmap=cmap2)
ax = plt.subplot(111)
ax.set_yscale('log')
ax.set_xscale('log')
xposition = [1,3.9,62.5,2000,64000,256000]
for xc in xposition:
        plt.axvline(x=xc, color='k', linestyle=':')
        plt.axhline(y=xc, color='k', linestyle=':')
img2 = plt.imshow(data1,interpolation='nearest',cmap = cmap2, norm=MidpointNormalize(midpoint=p50)
    ,extent=[12,2000,12,2000], origin='lower')
plt.colorbar(img2,cmap=cmap2)
fig.savefig(filenameI)
plt.close() 

我绘制数据的当前方式意味着 x 和 y 的值与我绘制数据的方式无关。我可以让那些轴说任何话。相反,我想绘制这些数据并让它们依赖于我的数据表中的 x 和 y 值,因为我将不得不在某些时候更改我的单位。我怎么做?

【问题讨论】:

  • 从问题中不清楚问题是什么。您显示的图似乎适合可视化数据。如果你想要不同的东西,你需要清楚地说明你想要什么样的情节以及你在实现它时遇到了什么问题。 Stackoverflow 的目的不是针对以下形式的问题提供建议:“嘿,我做了一个芝士蛋糕,但味道不太好;我还能烤什么蛋糕?”
  • 我绘制数据的当前方式意味着 x 和 y 的值与我绘制它的方式无关。我可以让那些轴说任何话。我想绘制这些数据并让它们依赖于我的数据表中的 x 和 y 值,因为我必须在某个时候更改我的单位。

标签: python matplotlib plot heatmap contour


【解决方案1】:

使用imshow 是在等间距网格上绘制数据的合适方法。为了在底层网格和imshow 中的轴之间建立链接,可以使用extent 关键字

plt.imshow(data1, extent=[x.min(), x.max(), y.min(), y.max()], ...)

绘制数据的其他选项可能是pcolorpcolormesh。 在 matplotlib 页面上可以找到一个很好的 comparisson between those 基本用法示例。

一些关于差异的进一步阅读:

基本上,pcolorpcolormeshimshow 慢得多。使用后两者中的哪一个只是一个品味问题。 pcolormesh 还支持不等间距的网格,它们的默认纵横比设置不同。

在二维网格上显示数据的另一种方法是contour plot,使用contourf。是否使用这种情节,必须根据使用情况来决定。

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 1970-01-01
    • 2020-09-24
    • 2021-04-03
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    相关资源
    最近更新 更多