1

我有一个 2D numpy 数组,我想使用它创建一个离散密度图。从某种意义上说,在(i,j)图上的每个点上都应放置一个点,其颜色应对应于(i,j)2D 数组的第 th 个元素的值。我不想使用imshow,因为我不想要任何插值,我也想控制要放置的点的大小。

4

2 回答 2

4

你试过imshowinterpolation='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 回答