从矩阵制作二维二维图

史蒂夫·佩索琴斯基

我是python初学者,我有一个无法解决的问题。我需要使用在txt中获得的矩阵制作2d曲线图,也可以在xls中获得它。矩阵示例:

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')

然后我将拥有它。因此,我有一部分代码像一个示例一样构成了hystogram,但我不了解如何在此处集成矩阵:

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()

在此代码的帮助下,我想使用矩阵制作一个hystogram,但我不知道如何。我会很感激的。

约翰·C

显示矩阵的最简单方法是通过seaborn的热图。它看起来像:

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因此似乎不是直方图。

另一种方法是创建3D图

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()

3D条形图

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章