我有一个2D numpy数组,我想用它创建一个离散的密度图。在图中的每个点(i,j)
处,应该放置一个点,其颜色应该对应于2D阵列的(i,j)
元素的值。我不想使用imshow
,因为我不想要任何插值,我也想控制要放置的点的大小。
答案 0 :(得分:3)
您是否尝试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()
答案 1 :(得分:0)
您可以随时为每个点明确地执行此操作,但这会很慢。我认为最好一行一行(保持固定)并使用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=
将采取任何相当多的内容并将其转换为颜色,但这可能与您无关。
有关散点图的更多信息,请参阅演示here