ここではPlotlyを用いて円グラフを描く方法について述べます。
plotlyの公式サイトPie Charts in Python で円グラフの描き方が記載されています。理解できるのであればこのサイトをみても良いのですが、DataFrameからデータを抽出して加工しているため なぜ公式サイトのサンプルコードであのようなグラフが描画されるのか理解できない人も多いのではないかとおもいます。 そのようなことがないように、ここでは本家サイトのデータ構造がどうなっているかを解説しつつグラフを描きます。
円グラフの書き方も知っている。設定や調整の方法のみ知りたいという方は【Plotly】円グラフの設定を参照してください。PlotlyExpressを使わずに、GraphObjectを用いる方法については別の機会で述べようとおもいます。
目次
- 全体の俯瞰
- データの取得と加工
- 円グラフを描く
- まとめ
全体の俯瞰
まずは公式サイトのサンプルソースを俯瞰してみてみます。
import plotly.express as px
df = px.data.gapminder().query("year == 2007").query("continent == 'Europe'")
df.loc[df['pop'] < 2.e6, 'country'] = 'Other countries' # Represent only large countries
fig = px.pie(df, values='pop', names='country', title='Population of European continent')
fig.show()
このソースコードのうち以下の部分がデータの取得と加工部分になります。
df = px.data.gapminder().query("year == 2007").query("continent == 'Europe'")
df.loc[df['pop'] < 2.e6, 'country'] = 'Other countries' # Represent only large countries
データをプロットしているは最後の2行です。
fig = px.pie(df, values='pop', names='country', title='Population of European continent')
fig.show()
データの取得、加工部分とプロットする部分の2つに分けてみてゆきます。
↑目次
データの取得と加工
データ取得加工の部を改めてみてみます。
df = px.data.gapminder().query("year == 2007").query("continent == 'Europe'")
df.loc[df['pop'] < 2.e6, 'country'] = 'Other countries' # Represent only large countries
最初の行はgapminderのデータからヨーロッパの2007年のデータを抽出しています。px.data.gapminder()は以下のようなデータを返します。
country continent year lifeExp pop gdpPercap iso_alpha iso_num
0 Afghanistan Asia 1952 28.801 8425333 779.445314 AFG 4
1 Afghanistan Asia 1957 30.332 9240934 820.853030 AFG 4
... ... ... ... ... ... ... ... ...
1702 Zimbabwe Africa 2002 39.989 11926563 672.038623 ZWE 716
1703 Zimbabwe Africa 2007 43.487 12311143 469.709298 ZWE 716
ここから.query("year == 2007").query("continent == 'Europe'")
でyearが2007でcontinentがEuropeのデータを抽出しています。その結果以下のようなデータが抽出されます。
country continent year lifeExp pop gdpPercap iso_alpha iso_num
23 Albania Europe 2007 76.423 3600523 5937.029526 ALB 8
83 Austria Europe 2007 79.829 8199783 36126.492700 AUT 40
... ... ... ... ... ... ... ... ...
1583 Turkey Europe 2007 71.777 71158647 8458.276384 TUR 792
1607 United Kingdom Europe 2007 79.425 60776238 33203.261280 GBR 826
次に以下の行でdfのpop(人口)が2000000以下の国をOther countriesという名前に変更しています。
df.loc[df['pop'] < 2.e6, 'country'] = 'Other countries'
↑目次
円グラフを描く
円グラフのプロットしているのは次の2行です。
fig = px.pie(df, values='pop', names='country', title='Population of European continent')
fig.show()
px.pie()で円グラフを描画します。引数のdfはプロットするデータ、values='pop'で人口の割合でグラフを描くことnames='country'で国ごとにグラフを描く設定をしています。title='Population of European continent'でグラフのタイトルを指定しています。
最後にfig.show()でグラフを描画しています。
↑目次
まとめ
Plotlyの公式サイトではデータの取得や加工、どのようなデータが用いられているか分かっているという前提の元で解説がおこなわれています。 そのため最初はわかりにくく感じるかもしれません。 しかしデータ構造さえ理解していれば、難しく感じることはないとおもいます。
どのグラフを描く場合も元データのデータ構造の把握やデータの加工が大切です。 もしPlotlyの公式サイトをみて、どうなっているかわからない場合は、 pandasのDataFrameの操作を理解できていない可能性があります。 その場合には 全体を理解するために、pandasやDataFrameについて何らかの本を読んだほうが良いとおもいます。
この記事が皆さんの理解の助けになれれは幸いです。
↑目次
Comment on this article
コメントはまだありません。
Send comments