首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用矩阵制作二维子午线图

用矩阵制作二维子午线图
EN

Stack Overflow用户
提问于 2021-02-03 21:21:27
回答 1查看 52关注 0票数 0

我是蟒蛇初学者,我有一个问题我解决不了。我需要用我在txt中得到的矩阵做一个2d的超音波,我也可以在xls中得到它。矩阵示例:

代码语言:javascript
复制
4.52   4.54   4.52   4.44   4.34   4.28
5.10   4.92   4.82   4.80   4.66   4.44
6.12   5.80   5.57   5.50   5.15   4.70 
6.47   6.54   6.27   6.13   6.21   5.97
8.11   8.73   8.70   8.63   8.84   8.55

我可以在密码里得到它:

a = np.loadtxt('matrix.txt')

然后我会得到它。因此,我有一部分代码,它可以像一个例子,但是我不明白如何在这里集成我的矩阵:

代码语言:javascript
复制
import matplotlib.pyplot as plt

n = 100000
x = np.random.standard_normal(n)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)

xedges = np.linspace(-4, 4, 42)
yedges = np.linspace(-25, 25, 42)

hist, xedges, yedges = np.histogram2d(x, y, (xedges, yedges))
xidx = np.clip(np.digitize(x, xedges), 0, hist.shape[0]-1)
yidx = np.clip(np.digitize(y, yedges), 0, hist.shape[1]-1)
c = hist[xidx, yidx]
plt.scatter(x, y, c=c)

plt.show()

在这段代码的帮助下,我想用我的矩阵做一个超音波,但是我不明白怎么做。我会感激你的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-03 22:48:42

显示矩阵的最简单方法是通过海运的热图。看起来应该是:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

a = np.array([[4.52, 4.54, 4.52, 4.44, 4.34, 4.28],
              [5.10, 4.92, 4.82, 4.80, 4.66, 4.44],
              [6.12, 5.80, 5.57, 5.50, 5.15, 4.70],
              [6.47, 6.54, 6.27, 6.13, 6.21, 5.97],
              [8.11, 8.73, 8.70, 8.63, 8.84, 8.55]])
sns.heatmap(a, annot=True, fmt='.2f', square=True)
plt.show()

由于这些值不是整数,也不是浮动到1的值,所以a似乎不是直方图。

另一种选择是创建一个三维绘图

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

a = np.array([[4.52, 4.54, 4.52, 4.44, 4.34, 4.28],
              [5.10, 4.92, 4.82, 4.80, 4.66, 4.44],
              [6.12, 5.80, 5.57, 5.50, 5.15, 4.70],
              [6.47, 6.54, 6.27, 6.13, 6.21, 5.97],
              [8.11, 8.73, 8.70, 8.63, 8.84, 8.55]])
fig = plt.figure(figsize=plt.figaspect(0.5))
ax = fig.add_subplot(1, 1, 1, projection='3d')

xedges = np.arange(a.shape[1] + 1)
yedges = np.arange(a.shape[0] + 1)

# Construct arrays for the anchor positions of the 30 bars.
xpos, ypos = np.meshgrid(xedges[:-1] + 0.25, yedges[:-1] + 0.25, indexing="ij")
xpos = xpos.ravel()
ypos = ypos.ravel()
zpos = 0

# Construct arrays with the dimensions for the 30 bars.
dx = dy = 0.5 * np.ones_like(zpos)
dz = a.ravel()

ax.bar3d(xpos, ypos, zpos, dx, dy, dz, zsort='average', color='turquoise')

plt.show()

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

https://stackoverflow.com/questions/66035866

复制
相关文章

相似问题

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