气泡图加权二维散点图数据到 mesh/grid
Bubble-plot weighted 2d scatter plot data onto mesh/grid
背景
我有一组二维的“原始”数据点,以数组的形式,即:
[[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]]
数据表示二维的圆形“质量分布”图 space。 x-y坐标表示数据点的x-y分布,每个x-y坐标处的值就是该数据点测得的mass/intensity。
我想绘制此数据,仅使用 Python、 (only at the integral x-y intersections),如下图所示,但使用我自己的 x-y散点图数据,而不是绘制 2D line/function.
此外,我想结合 "specify dot size" logic from another SO question,它允许我在“per-sample/value”的基础上指定点大小,即:
问题
如何组合上述逻辑来呈现数据集,如下所示:
[[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
(离散域、离散范围、连续值):
额外
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)?
或者,更像这样:
您可以先创建一个 meshgrid
来定义您的 x 和 y 坐标,然后使用 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()
生成热图
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)))
背景
我有一组二维的“原始”数据点,以数组的形式,即:
[[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]]
数据表示二维的圆形“质量分布”图 space。 x-y坐标表示数据点的x-y分布,每个x-y坐标处的值就是该数据点测得的mass/intensity。
我想绘制此数据,仅使用 Python、 (only at the integral x-y intersections),如下图所示,但使用我自己的 x-y散点图数据,而不是绘制 2D line/function.
此外,我想结合 "specify dot size" logic from another SO question,它允许我在“per-sample/value”的基础上指定点大小,即:
问题
如何组合上述逻辑来呈现数据集,如下所示:
[[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
(离散域、离散范围、连续值):
额外
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)?
或者,更像这样:
您可以先创建一个 meshgrid
来定义您的 x 和 y 坐标,然后使用 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()
生成热图
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)))