No Result
View All Result
WebHack
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車
No Result
View All Result
WebHack
No Result
View All Result
Home プログラミング

【Python初心者向け】matplotlibの使い方を徹底解説!

fukii by fukii
2020年3月26日
in プログラミング
0
【Python初心者向け】辞書(dict)の使い方を徹底解説!
0
SHARES
9
VIEWS

Pythonのmatplotlib(マットプロットリブと読みます)は「Python用のグラフ描画」ライブラリです。このライブラリを使えば代表的なグラフ(折れ線グラフや棒グラフ、円グラフなど)を簡単に描画することができます。

ここでは

  • Pythonのって何?
  • Pythonのはどう使うの?
  • Pythonの実際にグラフを描画してみたい!

といった方に、matplotlibについて解説します。

matplotlibを使えるようになると、Pythonがより一段と面白くなりますよ!

目次

  • 1 【Python】matplotlibをインストールする(Macの場合)
  • 2 【Python】matplotlibの使い方
    • 2.1 シンプルな折れ線グラフを描画する
    • 2.2 複数の折れ線グラフを描画する
    • 2.3 棒グラフを描画する
    • 2.4 散布図を描画する
    • 2.5 円グラフを描画する

【Python】matplotlibをインストールする(Macの場合)

matplotlibを使うために、まずはpipでインストールしましょう。

ターミナルで以下のコマンドを実行してください。

                            $ pip install matplotlib
                          

インストールされるまで少し待ちましょう。インストールが終わったら次のコマンドでインストールされていることを確認できます。

                            $ pip list installed | grep matplotlib
                          

上のコマンドを実行して、matplotlibが表示されればOKです。

また、途中でnumpyというライブラリも使うので、インストールしていない場合は併せてインストールしておくと捗ります。

                            $ pip install numpy
                          

【Python】matplotlibの使い方

では実際にmatplotlibを使ってグラフを描画してみましょう。

基本的には各グラフに対応したメソッドにデータのリストを渡し、結果をshow()で表示します。

シンプルな折れ線グラフを描画する

まずは最もシンプルな折れ線グラフを描画してみましょう。

折れ線グラフを描画するにはplot()を使います。

                            import matplotlib.pyplot as pltfrom matplotlib import rcParamsrcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro']temperature_avg = [5.6, 7.2, 10.6, 13.6, 20.0, 21.8, 24.1, 28.4, 25.1, 19.4, 13.1, 8.5]plt.plot(temperature_avg)plt.show()
                          

先ほどインストールしたmatplotlibのpyplotモジュールをインポートしています。

matplotlibはデータを描画するためのパッケージ群を指すもので、pyplotは実際にグラフを描画するためのモジュールです。matplotlibでグラフ描画する場合の一般的な書き方だと思っておけば問題ありません。

また、matplotlibはそのままでは日本語に対応していません。なのでrcParamsモジュールをインストールし、font.sans-serifに日本語対応したフォントを指定しています。

data変数にはグラフのデータをリストで格納しています。それを折れ線グラフを描画するためのplot()に渡し、show()でグラフを表示します。

上のコードを動かすと、次のようなグラフが表示されます。

タイトルも凡例もないシンプルなグラフですが、ちゃんとdataの内容が折れ線グラフとして表示されました。

でもこれだけではなんのグラフか分からないので、情報を付け足しましょう。

                            import matplotlib.pyplot as pltfrom matplotlib import rcParamsrcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro']month = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]temperature_avg = [5.6, 7.2, 10.6, 13.6, 20.0, 21.8, 24.1, 28.4, 25.1, 19.4, 13.1, 8.5]plt.title("2019年の平均気温の変化(東京)")plt.xlabel("月")plt.ylabel("平均気温")plt.plot(month, temperature_avg)plt.show()
                          

タイトルに「2019年の平均気温の変化(東京)」、x軸に「月」、y軸に「平均気温」という情報を追加しました。また、plot()引数が2つになっていますが、1つ目の引数に横軸のデータ、2つ目の引数に縦軸のデータを渡しています。

このコードを実行すると下のようなグラフが作成されます。

これでこのグラフが何を指しているのかが分かりました。

複数の折れ線グラフを描画する

今度は北海道と沖縄のデータを追加して、複数のグラフを同時に描画してみましょう。

                            import matplotlib.pyplot as pltfrom matplotlib import rcParamsrcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro']month = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]temperature_avg = [5.6, 7.2, 10.6, 13.6, 20.0, 21.8, 24.1, 28.4, 25.1, 19.4, 13.1, 8.5]temperature_avg_s = [-3.0, -2.6, 2.5, 8.0, 15.7, 17.4, 21.7, 22.5, 19.3, 13.3, 3.9, -0.8]temperature_avg_n = [18.1, 20.0, 19.9, 22.3, 24.2, 26.5, 28.9, 29.2, 28.0, 26.0, 23.1, 20.0]plt.title("2019年の平均気温の変化")plt.xlabel("月")plt.ylabel("平均気温")plt.plot(month, temperature_avg, label = "東京")plt.plot(month, temperature_avg_s, label = "札幌")plt.plot(month, temperature_avg_n, label = "那覇")plt.legend(loc = "upper left")plt.show()
                          

結果は次のようになります。

各都市の平均気温が一目で比較できるようになりました(那覇は冬過ごしやすそうで羨ましい…)。

matplotlibでは複数のグラフを表示すると自動的に色を変えてくれるので、視覚的に分かりやすいですね。

plot()の3つ目の引数に各データの凡例を設定し、legend()で出すロケーションを左上に指定しています。

棒グラフを描画する

棒グラフを描画するにはplot()の代わりにbar()を使います。

                            import matplotlib.pyplot as pltimport numpy as npfrom matplotlib import rcParamsrcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro']x = np.array([0, 1, 2, 3, 4]) #横軸labels = ['国語', '数学', '理科', '社会', '英語'] #横軸の各項目のラベルsato = [56, 98, 37, 36, 81] #縦軸suzuki = [77, 54, 80, 68, 69] #縦軸tanaka = [89, 71, 87, 95, 27] #縦軸width = 0.2plt.bar(x, sato, width=width, label='佐藤')plt.bar(x + width, suzuki, width=width, label='鈴木', tick_label = labels)plt.bar(x + width * 2, tanaka, width=width, label='田中')plt.legend(loc = 'upper left')plt.title('各教科の得点')plt.xlabel('得点') #横軸のラベルplt.show()
                          

bar()は1つ目の引数に横軸、2つ目の引数に縦軸を指定します。また、widthにはバーの幅、labelには各バーの凡例を設定しています。横軸の数値はその棒グラフを描画する位置を指定しています。

横軸のxはnumpyのndarrayで作成しています。こうすることで、全ての数値に対して計算するのが容易になります。

また、bar()の2つ目のtick_labelには横軸のラベルを指定しています。これでどのバーが何の教科の点数なのかが分かるようになりました。

散布図を描画する

次に散布図を描画してみましょう。散布図はscatter()を使います。

                            import matplotlib.pyplot as pltimport randomfrom matplotlib import rcParamsrcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro']x = []y = []for i in range(20, 80):x.append(i + random.randint(0, 20))y.append(i + random.randint(0, 20))plt.scatter(x, y)plt.title('点数の相関性(数学・物理)')plt.xlabel('数学の点数')plt.ylabel('物理の点数')plt.show()
                          

scatter()を使って数学と物理の点数の相関性を表す散布図を描画しました(それっぽくなるようにrandomで作ったサンプルです)。

円グラフを描画する

円グラフを描画したい場合はpie()を使います。

                            import matplotlib.pyplot as pltimport randomfrom matplotlib import rcParamsrcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro']population = [3748, 2740, 2327, 1970, 1592, 1530, 1522, 1466, 1307, 1199]city = ['横浜市', '大阪市', '名古屋市', '札幌市', '福岡市', '川崎市', '神戸市', '京都市', 'さいたま市', '広島市']plt.pie(    population    , labels = city    , counterclock = False    , startangle = 90    , autopct="%1.1f%%"    , pctdistance=0.7)plt.title('人口数TOP10の政令指定都市')plt.show()
                          

1つ目の引数にはデータを指定しています。

その他に指定した設定は次の通りです。

  • labels : 各項目のラベル
  • counterclock : 円グラフを時計回りに表示するか、反時計回りに表示するか(Falseは反時計回り)
  • startangle : 各項目を表示する角度(ここでは90度を指定)
  • autopct : 各項目の割合を表示する
  • pctdistance : 項目割合の表示位置を調整する

 

 

 

 

Tags: list matplotlib NumPy pip Python グラフ プログラミング プログラミング言語
Previous Post

【1台2役の働き】モバイルバッテリー搭載のLEDライトをレビュー

Next Post

Pythonでスクレイピングをやってみよう!-requests編-

fukii

fukii

Next Post
【Python初心者向け】辞書(dict)の使い方を徹底解説!

Pythonでスクレイピングをやってみよう!-requests編-

コメントを残す コメントをキャンセル

人気記事

  • 【デュアルスクリーンの4Kアクションカメラ】OSMO ACTIONを徹底レビュー

    【デュアルスクリーンの4Kアクションカメラ】OSMO ACTIONを徹底レビュー

    0 shares
  • [中学生・高校生向け]どんな教室を選べばいい?おすすめのプログラミング教室を徹底解説!

    0 shares
  • 【急速充電と4ポートが魅力】Anker PowerPort Speed 4を徹底レビュー

    0 shares
  • プログラミングスキルを身につけて副業に活かす、Progateの紹介

    0 shares
  • 【プロの映像を簡単に制作】DJIのRONIN-SCを徹底レビュー

    0 shares

カテゴリー

  • IoT/ガジェット (133)
  • Webサービス (66)
  • お知らせ (3)
  • プログラミング (40)
  • モバイルアプリ (41)
  • 自動運転 (2)
  • 通信技術 (18)
  • 電気自動車 (3)

タグ

5G AI Android Apple Bluetooth Chrome Chrome拡張機能 DJI ELECOM GoodNotes5 Google GoPro IoT iPad iPad OS iPad Pro iPhone Java Javascript kickstarter list NumPy ozmoaction pip Python Twitter Wi-Fi Wi-Fiルーター YouTube アクションカメラ アプリ キックスターター クラウドファンディング グーグル スマートフォン ディープラーニング プログラミング プログラミング言語 メッシュWi-Fi モバイルバッテリー リスト リモートワーク リモート会議 ワイヤレス充電器 新型コロナウイルス

WebHackはインターネットサービスやガジェットなどITトレンド情報をお伝えしていきます。

Category

  • IoT/ガジェット
  • Webサービス
  • お知らせ
  • プログラミング
  • モバイルアプリ
  • 自動運転
  • 通信技術
  • 電気自動車

Follow Us

  • プライバシーポリシー
  • お問い合わせ

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .

No Result
View All Result
  • お知らせ
  • IoT/ガジェット
  • Webサービス
  • 通信技術
  • プログラミング
  • 電気自動車

Copyright © 2012 - 2017, JNews - Premium WordPress news & magazine Jegtheme .