python pandas plot matplotlib 여러 그래프를 하나로
2893 단어 pandasPython3matplotlib
여러 그래프를 하나로 표시
조심한 것
・별로 멋지지 않지만, 「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로 복수 표시하고 싶다.
Reference
이 문제에 관하여(python pandas plot matplotlib 여러 그래프를 하나로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/varitys/items/6d90fd5d16ef6e84283f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ax1.grid(True)
ax2.grid(False)
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)
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로 복수 표시하고 싶다.
Reference
이 문제에 관하여(python pandas plot matplotlib 여러 그래프를 하나로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/varitys/items/6d90fd5d16ef6e84283f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)