2013-07-31 138 views
1

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

回答

3

您是否试过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() 

enter image description here

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

+0

我实在无法理解如何实现这个在我的情况,因为我有一个二维数组。你能告诉我怎么用2D数组来做这件事吗? – lovespeed

+0

你从你的二维数组中切出一个对应于固定'y'(或'x')的切片。并使用它作为颜色参数,例如'c = array [i]'。 – Greg