我有一个 2D numpy 数组,我想使用它创建一个离散密度图。从某种意义上说,在(i,j)
图上的每个点上都应放置一个点,其颜色应对应于(i,j)
2D 数组的第 th 个元素的值。我不想使用imshow
,因为我不想要任何插值,我也想控制要放置的点的大小。
问问题
1589 次
2 回答
4
你试过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()
于 2013-07-31T12:29:01.303 回答
0
您始终可以为每个点显式执行此操作,但这会很慢。我认为最好逐行执行(保持说 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 的更多信息,请参见此处的演示
于 2013-07-31T12:41:02.687 回答