2016-10-07 1 views
1

하기 matplotlib 문서를 사용하는 방법 : 상기 인수에 또한하기 matplotlib 분산 플롯 : <code>scatter()</code> 상태에 대한 데이터 = 인수

,이 기능은 데이터 키워드 인수를 취할 수 있습니다. 이러한 데이터 인수가 주어지면 다음 인수가 data []로 대체됩니다.

's', 'color', 'y', 'c', 'linewidths' 'facecolors', 'x', 'edgecolors'와 같은 요소가 포함되어 있습니다.

그러나이 방법을 사용하는 방법을 알 수는 없습니다. 최소한 예

import matplotlib.pyplot as plt 
import numpy as np 

data = np.random.random(size=(3, 2)) 
props = {'c': ['r', 'g', 'b'], 
     's': [50, 100, 20], 
     'edgecolor': ['b', 'g', 'r']} 

plt.scatter(data[:, 0], data[:, 1], data=props) 
plt.show() 

대신 제공된 하나의 기본 색상 및 크기의 플롯을 생성한다.

누구나 그 기능을 사용하고 있습니까?

plt.scatter(data[:, 0], data[:, 1], **props) 

워드 프로세서에서 그 비트가 나에게 혼란, 그리고 소스보고, axes/_axes.py에서 scatter과 함께 아무것도하지 않는 것 같습니다 : 귀하의 예를 참조하여

답변

0

약 2 년 전 덧붙였다. 릴리스 정보에는 간단한 예가 있습니다 ( https://matplotlib.org/users/prev_whats_new/whats_new_1.5.html#working-with-labeled-data-like-pandas-dataframes). 이 질문과 짧은 블로그 게시물 (https://tomaugspurger.github.io/modern-6-visualization.html) 이외에 내가 찾을 수있는 전부입니다.

기본적으로 임의의 dict-like 오브젝트 (문서라고하는 "레이블이 지정된 데이터")는 data 인수로 전달되고 플롯 매개 변수는 해당 키를 기반으로 지정됩니다. 예를 들어, 필드 a, b와 구조화 된 배열을 만들 수 있으며, c

coords = np.random.randn(250, 3).view(dtype=[('a', float), ('b', float), ('c', float)]) 

당신은 일반적으로

pyplot.plot(coords['a'], coords['b'], 'x') 

사용하지만 될 수있는 데이터 인수를 사용 ba의 플롯을 만들 것 done with

pyplot.plot('a', 'b','x', data=coords) 

레이블 b과 혼동 될 수 있습니다. 라인을 파란색으로 설정하는 스타일 문자열이지만 세 번째 인수는 그 모호성을 해결합니다.

pyplot.scatter(x='a', y='b', c='c', data=coords) 

x 및 y 데이터에 제한되지 않습니다. 'c'열에 따라 점 색상을 설정합니다.

이 기능이 pandas 데이터 프레임에 추가 된 것처럼 보이며 다른 개체보다 더 잘 처리됩니다.또한 문서화가 잘 안되며 약간 불안정합니다 (,및 y 키워드 인수는 plot 명령과 함께 실패하지만 scatter과 함께 사용하면 오류 메시지가 도움이되지 않음). 즉, 음모를 꾸미려는 데이터에 레이블이 있으면 멋진 속기가됩니다.

+0

답장을 보내 주셔서 감사합니다. 1 년이 지난 후에, 나는이 구문을 거의 포기했고 결국 나는 그것을 놓쳤다 고 말할 수 없다. 그러나 어쨌든, 나는 이것에 대한 문서를 완전히 오해 한 것입니다. 지금 당신의 예제를 이해할 수 있습니다. –

0

, 나는 다음과 같은 생각 당신이 원하는 것을 이 data 인수입니다. 나머지 kwargsPathCollection의 인수로 끝납니다. 거기에 버그가있을 수 있습니다.

또한, PathCollection의 다양한 set 방법과 scatter 후 이러한 매개 변수를 설정할 수 있습니다 예컨대 :

이 간과 기능이 될 것으로 보인다
pc = plt.scatter(data[:, 0], data[:, 1]) 
pc.set_sizes([500,100,200]) 
+0

답변 해 주셔서 감사합니다. 분명히 함수에 인수로 배열을 직접 전달할 수 있습니다. 데이터를 사용하여 인수를 크게 단순화 할 수있는 큰 코드에서 작업하고 있습니다. 이것이 내가 궁금해하는 이유입니다. 나는 또한'scatter()'의 코드를 검사하고'Artist '클래스에서'data'를'update'함수에 사용하는 것을 추적했지만, 그래도 그 코드가 무엇인지 알 수는 없습니다. –

+0

'** props' 대'data = props'가 단순한 것으로 기대했던 것에 비해? 매번 매 키워드를 철자하고 싶지 않다고 가정합니다. – tsj