Home > 記事 > Python > Plotly > 【Plotly】円グラフを描く | データの可視化

記事

【Plotly】円グラフを描く | データの可視化

ここではPlotlyを用いて円グラフを描く方法について述べます。

plotlyの公式サイトPie Charts in Python で円グラフの描き方が記載されています。理解できるのであればこのサイトをみても良いのですが、DataFrameからデータを抽出して加工しているため なぜ公式サイトのサンプルコードであのようなグラフが描画されるのか理解できない人も多いのではないかとおもいます。 そのようなことがないように、ここでは本家サイトのデータ構造がどうなっているかを解説しつつグラフを描きます。

円グラフの書き方も知っている。設定や調整の方法のみ知りたいという方は【Plotly】円グラフの設定を参照してください。PlotlyExpressを使わずに、GraphObjectを用いる方法については別の機会で述べようとおもいます。

目次

  1. 全体の俯瞰
  2. データの取得と加工
  3. 円グラフを描く
  4. まとめ

全体の俯瞰

まずは公式サイトのサンプルソースを俯瞰してみてみます。

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()でグラフを描画しています。

pie-chart-sample-1

↑目次

まとめ

Plotlyの公式サイトではデータの取得や加工、どのようなデータが用いられているか分かっているという前提の元で解説がおこなわれています。 そのため最初はわかりにくく感じるかもしれません。 しかしデータ構造さえ理解していれば、難しく感じることはないとおもいます。

どのグラフを描く場合も元データのデータ構造の把握やデータの加工が大切です。 もしPlotlyの公式サイトをみて、どうなっているかわからない場合は、 pandasのDataFrameの操作を理解できていない可能性があります。 その場合には 全体を理解するために、pandasやDataFrameについて何らかの本を読んだほうが良いとおもいます。

この記事が皆さんの理解の助けになれれは幸いです。

 

↑目次

Comment on this article

コメントはまだありません。

Send comments

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  Please enter the letters of the image