【发布时间】:2013-07-31 22:59:41
【问题描述】:
我有一个 2D numpy 数组,我想使用它创建一个离散密度图。从某种意义上说,在图上的每个点 (i,j) 上都应放置一个点,其颜色应对应于二维数组的第 (i,j) 个元素的值。我不想使用imshow,因为我不想进行任何插值,而且我还想控制要放置的点的大小。
【问题讨论】:
标签: python matplotlib plot density-plot
我有一个 2D numpy 数组,我想使用它创建一个离散密度图。从某种意义上说,在图上的每个点 (i,j) 上都应放置一个点,其颜色应对应于二维数组的第 (i,j) 个元素的值。我不想使用imshow,因为我不想进行任何插值,而且我还想控制要放置的点的大小。
【问题讨论】:
标签: python matplotlib plot density-plot
您始终可以为每个点显式执行此操作,但这会很慢。我认为最好逐行执行(保持说 y 固定)并使用 scatter 函数。
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
n = 100
x = plt.linspace(0,5, n)
y = plt.linspace(0,5, n)
ax = plt.subplot(111)
for i in range(n):
y_fixed = y[i] * plt.ones(n)
z = [(abs(plt.cos(x[i])), 0.0, 0.5) for i in range(n)]
ax.scatter(x, y_fixed, c=z)
plt.show()
这个庄园的大小也可以使用s 参数进行调整。
没有任何关于如何指定颜色的数据,我使用了RGB 值。您可能需要规范化,但是 c= 会接受任何东西并将其转换为颜色,但这可能与您不太相关。
有关 scatter 的更多信息,请参阅演示 here
【讨论】:
y(或x)。并将其用作颜色参数,例如 c=array[i].
你试过imshow 和interpolation='nearest' 吗?这接近你想要的吗?
import matplotlib.pyplot as plt
import numpy as np
data = np.arange(100).reshape(10, 10)
fig, ax = plt.subplots()
ax.imshow(data, interpolation='nearest')
plt.show()
【讨论】: