gpt4 book ai didi

python - 气泡图加权二维散点图数据到网格/网格

转载 作者:行者123 更新时间:2023-11-28 18:04:16 35 4
gpt4 key购买 nike

背景

我有一组二维的“原始”数据点,以数组的形式,即:

[[0, 0, 1, 0, 0],
[0, 1, 2, 1, 0],
[1, 2, 4, 2, 1],
[0, 1, 2, 1, 0],
[0, 0, 1, 0, 0]]

数据表示二维空间中的圆形“质量分布”图。 x-y坐标表示数据点的x-y分布,每个x-y坐标处的值就是该数据点测得的质量/强度。

我想绘制此数据,仅使用 Python, ( only at the integral x-y intersections ),如下图所示,但使用我自己的 x-y 散点图数据,而不是绘制二维线/函数.

enter image description here

此外,我想合并 "specify dot size" logic from another SO question ,这允许我在“每个样本/值”的基础上指定点大小,即:

enter image description here


问题

我如何结合上面的逻辑来呈现这样的数据集:

[[0, 0, 1, 0, 0],
[0, 1, 2, 1, 0],
[1, 2, 4, 2, 1],
[0, 1, 2, 1, 0],
[0, 0, 1, 0, 0]]

就像这样,通过 matplotlib/pyplot(离散域、离散范围、连续值): enter image description here


额外

How can I re-use the above data set to generate a heatmap of the same data (i.e. continuous-domain, continuous-range, continuous valued)?

enter image description here

或者,更像这样:

enter image description here

最佳答案

您可以先创建一个定义 x 和 y 坐标的 meshgrid,然后使用 data 数组定义点的大小。 0 的条目将不会显示,因为大小为 0。我使用 100 的重新缩放因子来放大点。

完整的工作代码:


import numpy as np
import matplotlib.pyplot as plt

data = np.array([[0, 0, 1, 0, 0],
[0, 1, 2, 1, 0],
[1, 2, 4, 2, 1],
[0, 1, 2, 1, 0],
[0, 0, 1, 0, 0]])

mesh = np.arange(len(data))
x, y = np.meshgrid(mesh, mesh)
plt.scatter(x, y, s=data*100)
plt.xticks(range(len(data))) # To put ticks at integer values
plt.yticks(range(len(data))) # To put ticks at integer values
plt.show()

enter image description here

生成热图

import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt

# data here

x, y = np.meshgrid(np.arange(len(data)), np.arange(len(data)))
plt.scatter(x, y, s=data*100, c=data, cmap=cm.Oranges)
plt.xticks(range(len(data)))
plt.yticks(range(len(data)))

enter image description here

关于python - 气泡图加权二维散点图数据到网格/网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54497628/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com