2013-07-25 4 views
0

치수 50 * 50의 데이터 세트를 플롯해야합니다. 각 데이텀은 0과 1 사이의 수인 "확률"과 관련이 있습니다. 색 그라디언트로 확률을 표현하고 싶습니다. matplotlib 도구를 사용하여 점을 그릴 방법을 알고 있습니다. 하지만 어떻게 그들을 적절한 색상과 연관시켜야합니까?Matplotlib Python Scatter Plot

감사합니다.

+1

당신이 시도한 것을 보여줄 수 있습니까? [docs] (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter)를 읽었습니까? 그들에 대해 당신이 이해하지 못했거나 예상대로 일하지 않았습니까? – tacaswell

+1

2 차원 공간에서 2500 차원을 플로팅 할 것인지 확인하려면? ... –

+0

반복? http://stackoverflow.com/questions/8202605/matplotlib-scatterplot-colour-as-a-function-of-a-third-variable – Brad

답변

6

이와 비슷한? 핵심은 z의 스칼라 값에 따라 각 포인트에 cmap으로 지정된 색상 맵을 적용하도록 scatter에 알리는 c=z입니다.

import numpy 
import matplotlib.pyplot as plt 
x=numpy.random.randint(0,100,size=25) 
y=numpy.random.randint(0,100,size=25) 
z=numpy.random.rand(25) 
plt.scatter(x, y, c=z, s=100, cmap=plt.cm.cool, edgecolors='None', alpha=0.75) 
plt.colorbar() 
plt.show() 

또한 c 인수로 색상의 목록을 제공 할 수 있습니다. 이 경우 예를

colors=[(1,0,1,el) for el in z] 
plt.scatter(x, y, c=colors, s=100, edgecolors='None') 

를 들어 각 점은 그와 관련된 RGB 튜플을 가지고 있으며, scatter 사용자가 지정한 색상을 사용합니다. 위에 주어진 두 줄을 사용하면 확률에 따라 각 지점의 알파 값을 다르게 할 수 있습니다. z. 이것은 당신이 scatter 단지 alpha 키워드로 달성 할 수 없습니다

+0

무엇이 s = 100입니까? – Martian2049

8

는 각 지점에 특정 색상을 연결하는 컬러 맵을 사용합니다. 기본 "핫"컬러 맵을 사용하여 색이 Z 값에 연관된 이때

Scatter 3d plot

예를 들어,이 결과 코드

import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import random as ran 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

cmhot = plt.cm.get_cmap("hot") 
xs = [ran.random()*50 for n in range(0,50)] 
ys = [ran.random()*50 for n in range(0,50)] 
zs = [ran.random() for n in range(0,50)] 
l = ax.scatter(xs, ys, zs, c=zs, cmap=cmhot) 
fig.colorbar(l) 
plt.show() 

의 다음 부분을 고려한다.

관련 문제