如何解决从二维矩阵创建密度图
一个简化的例子:
我有一个一维初始速度数组,比如 vi = [1,2,3]
,对于 vi
中的每个值,我有一行对应的最终速度存储在二维数组 vf = [ [0.7,1.1,1.5],[1.8,2.1,2.4],[2.7,2.9,3.1] ]
中。
我希望能够制作点 (vi,vf)
的二维直方图,即坐标 [1,0.7],[1,1.1],[2,1.8],2.1],and [3,2.7],[3,2.9],3.1]
。
有没有办法创建这样的配对?
The answer to this question 建议使用 imshow 或 matshow,但根据分配给每个元素的值对 bin 进行着色。我需要的是一个绘图程序,它采用一个二维矩阵,将其划分为一个网格,并通过每个 bin 中的 count 为每个 bin 着色。
感谢任何帮助!
解决方法
您似乎有一个二维空间,其中 x 值来自 vi
,y 值来自 vf
。重复 vi
n
次(n
的行长度为 vf
)使 x
和 y
数组具有相同数量的元素,对应于所需的元组。
在代码中:
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt
vi = np.array([1,2,3])
vf = np.array([[0.7,1.1,1.5],[1.8,2.1,2.4],[2.7,2.9,3.1]])
x = np.repeat(vi,vf.shape[1]) # repeat the x-values by the row-length of `vf`
y = vf.ravel() # convert to a 1D array
sns.histplot(x=x,y=y)
plt.show()
数据太少,情节看起来很无趣。您必须使用真实数据进行测试,以确定它是否符合您的预期。
print([*zip(x,y)])
将 (x,y)
打印为元组,即
[(1,0.7),(1,1.1),1.5),(2,1.8),2.1),2.4),(3,2.7),2.9),3.1)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。