matplotlib에 100 % 스택 차트를 만드는 방법이 궁금합니다. matplotlib 페이지에서 예제를 찾을 수 없었습니다.matplotlib로 100 % 스택 차트 작성
누군가 여기서 어떻게 달성 할 수 있는지 보여 줄 수 있습니까?
matplotlib에 100 % 스택 차트를 만드는 방법이 궁금합니다. matplotlib 페이지에서 예제를 찾을 수 없었습니다.matplotlib로 100 % 스택 차트 작성
누군가 여기서 어떻게 달성 할 수 있는지 보여 줄 수 있습니까?
이를위한 간단한 방법은 I는 예에서와 같이 어레이 구성의 y 값을 갖는 것으로 가정 100
마다, X 값에 대해 y 값을 합계가 있는지 확인한다 아래
y = np.array([[17, 19, 5, 16, 22, 20, 9, 31, 39, 8],
[46, 18, 37, 27, 29, 6, 5, 23, 22, 5],
[15, 46, 33, 36, 11, 13, 39, 17, 49, 17]])
이 열 합계 당신은 그것의 열 합계에 의해 y
배열을 분할해야합니다, (100), 그리고 다음 곱하기 (100)에 의해이 만드는 y 값이 0에서 100에 걸쳐 수 있는지 확인하기 위해, 즉 y 축의 「단위」퍼센트. y 축의 값을 0에서 1까지의 간격으로 확장하려면 100을 곱하면 안됩니다.
y 값이 인 경우에도 위와 같이 배열이입니다. , 원칙은 동일합니다. y 값으로 구성된 각 배열의 해당 요소 (예 : y1
, y2
등)의 합계는 100 (또는 1)이어야합니다.
아래 코드는 @LogicalKnight의 수정 된 버전입니다. @LogicalKnight는 그의 코멘트에 링크되어 있습니다.
import numpy as np
from matplotlib import pyplot as plt
fnx = lambda : np.random.randint(5, 50, 10)
y = np.row_stack((fnx(), fnx(), fnx()))
x = np.arange(10)
# Make new array consisting of fractions of column-totals,
# using .astype(float) to avoid integer division
percent = y/y.sum(axis=0).astype(float) * 100
fig = plt.figure()
ax = fig.add_subplot(111)
ax.stackplot(x, percent)
ax.set_title('100 % stacked area chart')
ax.set_ylabel('Percent (%)')
ax.margins(0, 0) # Set margins to avoid "whitespace"
plt.show()
다음과 같은 결과가 표시됩니다.
적절한 도움을 주셔서 감사합니다. 나는 현재 mpl 1.2.1과 약간의 싸움을하고 있으며 데이터를 처음부터 계획하고 numpy는이 문제를 다시 볼 시간이 없다. 따라서이 멋진 코드를 얻게되어 정말 기쁩니다! 건배 토마스 –
나는 지금 나 자신 차트 스택을 생산하는이 방법을 시도했습니다, 예외는 내가 stackplot '역 추적 (마지막으로 가장 최근 통화)를 호출하려고 할 때마다 발생되는 : 파일 "
@Magic_Matt_Man 어떤 Python 및 Matplotlib 버전을 사용하고 있습니까? – hooy
방법이 실시 예 내지 약 (http://matplotlib.org/examples/pylab_examples/stackplot_demo.html)? –
시도해 보셨습니까? 대부분 작업 코드가있는 경우 일반적으로보다 나은 응답을 얻을 수 있습니다. 그것이 의미하는 바대로이 질문은 '나를 위해 제 일을 해주십시오'라고 읽습니다. @LogicalKnight가 지적한 예제는 좋은 시작이며 거기에서 95 %를 얻습니다. – tacaswell