2014-10-02 4 views
3

어떻게 든, 서클에 색상을 지정하는 것은 산포도에 할당 색 다르게 작동합니다matplotlib의 원에 색상을 지정하는 방법은 무엇입니까?

import numpy as np 
import matplotlib.pyplot as plt 
fig = plt.figure(figsize=(6,6)) # give plots a rectangular frame 

N = 4 
r = 0.1 

pos = 2.*np.random.rand(N,2) -1 

# give different points different color 
col = 1./N*np.arange(0,N) 

# Method 1 
for i,j,k in zip(pos[:,0],pos[:,1],col): 
    circle = plt.Circle((i,j), r, color = k) 
    fig.gca().add_artist(circle) 
plt.show() 

# Method 2 
plt.scatter(pos[:,0],pos[:,1], c = col) 
plt.show() 

왜 방법 1 다음과 같은 오류 제공하는 동안 방법이 작업을 수행합니다

ValueError: to_rgba: Invalid rgba arg "0.0" 
to_rgb: Invalid rgb arg "0.0" 
cannot convert argument to rgb sequence 
+2

'color' 대신'c'를 사용하면 작업하기 전에 색을 채울 수 있습니다. –

답변

5

오류 당신이 얻고을 float 값이 아니라

과 같이 float 값이 인 문자열의 문자열 표현을 사용해야하기 때문입니다.

위의 글에서는 의 약어 인 str(.75) = "0.75"과 같이 float을 문자열로 변환하고 각 k 값에 대해 다른 색상을 제공하는 뒤로 틱을 사용하고 있습니다.

다음은 오류가 발생한 docs on to_rgba입니다.

편집 :
enter image description here

가하기 matplotlib에서 색상을 지정하는 방법에는 여러 가지가 있습니다. 위의 경우 float의 문자열 표현을 통해 색상 표를 참조하는 float를 설정합니다. 이 경우 Colormap은 PolyCollection을 통해 설정할 수 있습니다. scatter 같은 Circle 이상을 사용하는 사용자의 경우

, 그것은 아마 가장 쉬운 방법은 바로 직접 색상을 설정, 그리고 그 컬러 맵에서 조회 할 수 있습니다 예를 들어 rgba 튜플, 하나를 사용하여 수행 할 수 있습니다.

다음은 다양한 y 범위에 대해 3 개의 다른 색상 표를 사용하는 예입니다.

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.colors as clrs 
import matplotlib 

N, r = 200, .1 
cms = matplotlib.cm 
maps = [cms.jet, cms.gray, cms.autumn] 

fig = plt.figure(figsize=(6,6)) # give plots a rectangular frame 
ax = fig.add_subplot(111) 
pos = 2.999*np.random.rand(N,2) 

for x, y in pos: 
    cmi = int(y)    # an index for which map to use based on y-value 
    #fc = np.random.random() # use this for random colors selected from regional map 
    fc = x/3.     # use this for x-based colors 
    color = maps[cmi](fc)  # get the right map, and get the color from the map 
         # ie, this is like, eg, color=cm.jet(.75) or color=(1.0, 0.58, 0.0, 1.0) 
    circle = plt.Circle((x,y), r, color=color) # create the circle with the color 
    ax.add_artist(circle) 
ax.set_xlim(0, 3) 
ax.set_ylim(0, 3) 
plt.show() 

위의 나는 내가 그것을 잘 어울려 생각했기 때문에 각 밴드의 색상이 x에 따라 다양하게,하지만 당신은 물론, 임의의 색상을 할 수 있습니다. 그냥 사용하는 fc 라인 전환 : matplot lib 디렉토리의 소정의 색상을 사용하기 위해

enter image description here

1

, 당신은 색상 필드에 문자열을 전달해야합니다. 이 경우 'k'는 단순히 k 대신에 검은 색이됩니다.

이 코드는 나를 위해 오류를 포기하지 않았다

for i,j,k in zip(pos[:,0],pos[:,1],col): 
    circle = plt.Circle((i,j), r, color = 'k') 
    fig.gca().add_artist(circle) 
plt.show() 

당신은 실행 가능한 것입니다 코드를 제공하여 다음 질문에서 확인하시기 바랍니다. 이 경우 변수 N r은 정의되지 않았습니다.

+0

누락 된 선언을 지적 해 주셔서 감사합니다. 나는 그들을 추가했다. 해결책은 그레이 스케일 색상에 적합합니다. '진짜'색상으로 수정하는 방법을 알고 있습니까? – user3058865

+2

tom10이 준 대답은 아주 완벽합니다. 원하는 색상을 정의 할 수 있으며 사전 정의 된 색상도 많이 있습니다. 여기에서 모든 정보를 찾을 수 있습니다. [link] (http://matplotlib.org/api/colors_api.html) 검은 색으로 'k'를 사용한 것과 같이 미리 정의 된 문자를 사용할 수 있습니다. – alasimpara

관련 문제