matplotlib中的离散密度图

时间:2013-07-31 12:10:44

标签: python matplotlib plot density-plot

我有一个2D numpy数组,我想用它创建一个离散的密度图。在图中的每个点(i,j)处,应该放置一个点,其颜色应该对应于2D阵列的(i,j)元素的值。我不想使用imshow,因为我不想要任何插值,我也想控制要放置的点的大小。

2 个答案:

答案 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()

enter image description here

答案 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()

enter image description here

使用s参数在此庄园中也可以调整大小。

如果没有任何关于指定颜色的数据,我使用了RGB值。您可能需要进行标准化,但c=将采取任何相当多的内容并将其转换为颜色,但这可能与您无关。

有关散点图的更多信息,请参阅演示here