python pandas plot matplotlib 여러 그래프를 하나로

여러 그래프를 하나로 표시



조심한 것



・별로 멋지지 않지만, 「pivot_table」로 집계 내용을 「sum」・「len」으로 2개 작성
2개의 데이터가 하나의 출력이 되도록 조정
항목을 「sum」만 「len」만 읽어들인다고 할 수 없을까. . . 할 수 있을 것 같네요. . . .

・그리드선은 보기 어렵기 때문에 한쪽만 표시

ax1.grid(True)
ax2.grid(False)

・범례의 표시를 오프 「legend=False」
・바 그래프의 두께를 조정 「width=0.8」

data1_sum.plot(ax=ax1, kind='bar', legend=False, width=0.8, stacked=True)
data1_len.plot(ax=ax2, kind='line', legend=False)

・범례는 함께 표시
· "bbox_to_anchor"로 장소를 그래프 밖으로

h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax1.legend(h1, l1, bbox_to_anchor=(1.1,1), loc='upper left',fontsize=10)

코드



※전과 같은 데이터 사용하고 있지만 인덱스명칭이 바뀌어 왔다. . .

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import ticker
from matplotlib import dates as mdates
import numpy as np

df = pd.read_csv(r'インプットファイル', index_col=0).drop(['Company Code','Company Name','Store Code','Store Name','Payment Number','Refund Number'], axis=1)
df_pre = df["Date/Time"].str.split("\"").str[1]
df["Date/Time"] = df_pre.str.split(":").str[0]

#要素の内容を確認
 #要素一覧
pay_syu = df["Payment Option"]
 #要素をカウント
pay_s  = pay_syu.unique()

#集計
 #合算(aggfunc→sum)
data1_sum = pd.pivot_table(df, index='Date/Time',  columns='Payment Option',  values='Amount', aggfunc=[sum]).fillna(0)
 #件数(aggfunc→len)
data1_len = pd.pivot_table(df, index='Date/Time',  columns='Payment Option',  values='Amount', aggfunc=[len]).fillna(0)

#plot
 #区画
fig = plt.figure(figsize=(8,6))
ax1 = fig.add_subplot()
ax2 = ax1.twinx()

#plot
data1_sum.plot(ax=ax1, kind='bar', legend=False, width=0.8, stacked=True)
data1_len.plot(ax=ax2, kind='line', legend=False)

#凡例情報取得
h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
 #凡例情報結合
ax1.legend(h1, l1, bbox_to_anchor=(1.1,1), loc='upper left',fontsize=10)

ax1.set_title("daily", fontsize=8)
ax1.set_xlabel("day", fontsize=7)
ax1.set_ylabel("money", fontsize=7)
ax2.set_ylabel("count", fontsize=7)

#grid線 ax1は残してax2は消す
ax1.grid(True)
ax2.grid(False)

#グラフのグリッドをグラフの本体の下にずらす
ax1.set_axisbelow(True)

#軸の目盛りの単位を変更する
ax2.yaxis.set_major_formatter(ticker.FormatStrFormatter("%d件"))

plt.savefig(r'アウトプット' ,bbox_inches='tight')

plt.close()



전망



Payment Option 요소의 고유 건수 계산
요소별로 데이터를 만들고 그래프를 만듭니다.
subplots로 복수 표시하고 싶다.

좋은 웹페이지 즐겨찾기