2013-07-31 31 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