mei_13のPython講座 ロゴ

【解説】Pythonでデータを可視化しよう!グラフ作成の基本からカスタマイズまで




Pythonでデータを可視化しよう!グラフ作成の基本からカスタマイズまで


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは。最近Pythonの勉強をしているんですけど、計算結果を数字だけで見るのが少し大変になってきて……。データを図やグラフにして、パッと見てわかるようにする方法ってありますか?


Yukiのアイコン
【Yuki】 Hiroki君、こんにちは。数字の羅列を追いかけるのは、確かに少し疲れてしまうかもしれませんね……。Pythonには「データの可視化」といって、数値をグラフにするための素晴らしいライブラリがたくさん用意されているんですよ。


Hirokiのアイコン
【Hiroki】 「可視化」ですか、カッコいい響きですね!具体的にはどんなものを使うんですか?


Yukiのアイコン
【Yuki】 一番有名で、多くの人が使っているのは「Matplotlib(マットプロットリブ)」というライブラリだと思います。これを使えば、折れ線グラフや棒グラフ、散布図など、ほとんどのグラフを作成することができるんです。今日は、その基本的な使い方を一緒に見ていきましょうか。

なぜPythonでグラフを作るの?


Hirokiのアイコン
【Hiroki】 グラフならエクセルとかでも作れますよね?あえてPythonで書くメリットって何なんでしょう。


Yukiのアイコン
【Yuki】 そうですね……。もちろんエクセルも便利ですが、Pythonを使うと、大量のデータから自動的に何百枚ものグラフを生成したり、複雑な計算とグラフ作成を一つのプログラムの中で完結させたりできるのが強みだと思います。


Hirokiのアイコン
【Hiroki】 なるほど、自動化ができるのはプログラミングならではですね。


Yukiのアイコン
【Yuki】 ええ。それに、デザインを細かく制御できるのも魅力の一つかもしれません。フォントの大きさや線の太さ、色使いなど……見やすさにこだわったグラフを作ることができるようになると、情報の伝わり方が全然違ってくるんですよ。

準備:Matplotlibをインストールしよう


Hirokiのアイコン
【Hiroki】 さっそくやってみたいです!まずは何をすればいいですか?


Yukiのアイコン
【Yuki】 まずは、Matplotlibを使えるように準備しましょう。コマンドラインやターミナルで、次のコマンドを入力してみてください。

pip install matplotlib


Hirokiのアイコン
【Hiroki】 入力しました!……「Successfully installed」って出たので、大丈夫そうです。


Yukiのアイコン
【Yuki】 よかったです。これで準備は整いました。プログラムの冒頭では、いつもこのようにインポートして使います。

import matplotlib.pyplot as plt


Yukiのアイコン
【Yuki】 as plt と付けるのは、プログラムの中で plt という短い名前で呼び出せるようにするための、慣習のようなものですね。

最初の第一歩:折れ線グラフを描く


Hirokiのアイコン
【Hiroki】 準備ができたら、まずは簡単なグラフから描いてみたいです。


Yukiのアイコン
【Yuki】 では、一番シンプルな「折れ線グラフ」を作ってみましょう。たとえば、1週間の気温の変化をグラフにしてみる、というのはどうでしょうか。

import matplotlib.pyplot as plt

# データの準備
days = [1, 2, 3, 4, 5, 6, 7]
temp = [20, 21, 19, 22, 25, 23, 21]

# グラフを作成
plt.plot(days, temp)

# グラフを表示
plt.show()


Hirokiのアイコン
【Hiroki】 あ、新しいウィンドウが開いて、線グラフが表示されました!たったこれだけでいいんですね。


Yukiのアイコン
【Yuki】 はい。plt.plot(x軸のデータ, y軸のデータ) というのが基本の形です。これだけで、データを線でつないだ図を作成してくれるんですよ。

グラフを見やすく整える:タイトルとラベル


Hirokiのアイコン
【Hiroki】 グラフは出たんですけど、これだけだと何のデータか分かりにくいですね。縦軸と横軸が何を表しているかとか、タイトルとかは付けられないんですか?


Yukiのアイコン
【Yuki】 もちろん、追加できますよ。グラフを読み取る人に優しくするのは、とても大切なことだと思います。少しコードを付け足してみましょう。

import matplotlib.pyplot as plt

days = [1, 2, 3, 4, 5, 6, 7]
temp = [20, 21, 19, 22, 25, 23, 21]

plt.plot(days, temp)

# タイトルを追加
plt.title("Weekly Temperature")

# 軸ラベルを追加
plt.xlabel("Day")
plt.ylabel("Temperature (C)")

# グリッド(網目)を表示
plt.grid(True)

plt.show()


Hirokiのアイコン
【Hiroki】 おぉ、だいぶ「グラフらしく」なりました!グリッドがあると、数値が読み取りやすくていいですね。


Yukiのアイコン
【Yuki】 そう言ってもらえると嬉しいです。ちなみに、日本語を使いたい場合は少し工夫が必要なのですが、まずは英語で基本を押さえていくのがスムーズかもしれません。

データの個性を引き出す:棒グラフと散布図


Hirokiのアイコン
【Hiroki】 折れ線グラフ以外にも、よく使うグラフってありますか?


Yukiのアイコン
【Yuki】 そうですね……。量の違いを比較したいときは「棒グラフ」、データ同士の相関関係を見たいときは「散布図」がよく使われると思います。


Hirokiのアイコン
【Hiroki】 それらも簡単に作れるんでしょうか?


Yukiのアイコン
【Yuki】 ええ、plt.plot() の部分を少し変えるだけです。たとえば棒グラフなら plt.bar() を使います。

# 棒グラフの例
labels = ["A", "B", "C", "D"]
values = [10, 25, 15, 30]

plt.bar(labels, values)
plt.title("Sample Bar Chart")
plt.show()


Yukiのアイコン
【Yuki】 そして、散布図なら plt.scatter() ですね。

# 散布図の例
x = [1, 2, 3, 4, 5, 6]
y = [2, 4, 1, 6, 8, 5]

plt.scatter(x, y)
plt.title("Sample Scatter Plot")
plt.show()


Hirokiのアイコン
【Hiroki】 なるほど、関数の名前がそのままグラフの種類になっているんですね。覚えやすそうです。

もっと美しく:色の変更とスタイルの適用


Hirokiのアイコン
【Hiroki】 あの、もう少し見た目を自分好みに変えたりはできないんでしょうか。青い線だけじゃなくて、もっと別の色にしたいな、とか。


Yukiのアイコン
【Yuki】 ふふ、こだわりたい気持ち、よくわかります……。色は color という引数で簡単に変えられますよ。さらに、Matplotlibには「スタイル」という機能があって、一気に全体の雰囲気を変えることもできるんです。

import matplotlib.pyplot as plt

# スタイルを適用(例えば 'ggplot' というスタイル)
plt.style.use('ggplot')

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

# 色を水色に、線の太さを3に、マーカー(点)を付ける
plt.plot(x, y, color='skyblue', linewidth=3, marker='o')

plt.title("Stylish Graph")
plt.show()


Hirokiのアイコン
【Hiroki】 わあ、急にオシャレになりましたね!背景に色がついて、線も太くなって見やすいです。


Yukiのアイコン
【Yuki】 デザインを少し整えるだけで、データが持っているメッセージがより際立ってくる気がしませんか?わたしは、こういう細かな調整をしている時間が、一番静かで落ち着くので好きだったりします……。


Hirokiのアイコン
【Hiroki】 確かに、綺麗になると「できた!」っていう達成感がありますね。

複数のデータを一つのグラフにまとめる


Hirokiのアイコン
【Hiroki】 もし、2つのデータを比較したい時はどうすればいいですか?たとえば「去年と今年の気温」を同時に表示したい、みたいな。


Yukiのアイコン
【Yuki】 それもよくあるケースですね。その場合は、plt.show() を呼ぶ前に、plt.plot() を2回記述すればいいんです。その際、どちらが何のデータか分かるように「凡例(レジェンド)」を付けるのが一般的です。

import matplotlib.pyplot as plt

days = [1, 2, 3, 4, 5, 6, 7]
temp_last_year = [18, 19, 17, 20, 22, 21, 19]
temp_this_year = [20, 21, 19, 22, 25, 23, 21]

plt.plot(days, temp_last_year, label="Last Year")
plt.plot(days, temp_this_year, label="This Year")

# 凡例を表示
plt.legend()

plt.title("Comparison of Temperature")
plt.show()


Hirokiのアイコン
【Hiroki】 plt.legend() を書くだけで、右上に説明が出てきました!これで比較もバッチリですね。

グラフを保存して共有しよう


Hirokiのアイコン
【Hiroki】 作成したグラフを、レポートとかに使いたいときはどうすればいいんでしょう。スクリーンショットを撮るしかないですか?


Yukiのアイコン
【Yuki】 いえいえ、Pythonなら画像ファイルとして直接保存できますよ。plt.show() の代わりに、plt.savefig() という関数を使います。

plt.plot(days, temp_this_year)
plt.title("My Graph")

# 画像として保存(PNG形式など)
plt.savefig("my_graph.png")


Hirokiのアイコン
【Hiroki】 おぉ、フォルダの中に画像が保存されました!これなら資料に貼り付けるのも簡単ですね。


Yukiのアイコン
【Yuki】 そうですね。解像度を高く保存したいときは、dpi=300 のように指定すると、印刷しても綺麗な画像になります。

さらなる高みへ:Seabornの紹介


Hirokiのアイコン
【Hiroki】 Matplotlibだけでも十分すごいですけど、もっと簡単に、もっと綺麗なグラフを作る方法は他にもあるんですか?


Yukiのアイコン
【Yuki】 意欲的ですね、素晴らしいと思います……。実は、Matplotlibをベースにしつつ、より洗練されたデザインと高度な統計グラフを簡単に描けるようにした「Seaborn(シーボーン)」というライブラリもあるんですよ。


Hirokiのアイコン
【Hiroki】 Seaborn……。どんな違いがあるんですか?


Yukiのアイコン
【Yuki】 たとえば、データの分布を密度で表したり、複雑な行列データを色で表現したり(ヒートマップ)するのが、驚くほど短いコードで書けるんです。色使いもデフォルトでとても美しく設定されているので、デザインに自信がない人でもプロのようなグラフが作れます。


Hirokiのアイコン
【Hiroki】 それは気になります。


Yukiのアイコン
【Yuki】 もし興味があれば、まずはMatplotlibに慣れてから、次にSeabornを覗いてみてください。一歩ずつ進んでいけば、きっとデータ分析がもっと楽しくなるはずです。

最後に:可視化で大切なこと


Hirokiのアイコン
【Hiroki】 Yukiさん、今日はありがとうございました。グラフが描けると、プログラミングでできることが一気に広がった気がします。


Yukiのアイコン
【Yuki】 喜んでもらえてよかったです。最後に一つだけ……グラフを作る時に一番大切なのは、何を見せたいかを明確にすることだと思います。派手な色を使ったり、複雑な図形を使ったりすることよりも、相手に「何が起きているか」を正確に伝えること。


Hirokiのアイコン
【Hiroki】 正確に、ですか。


Yukiのアイコン
【Yuki】 はい。データは嘘をつきませんが、見せ方一つで誤解を与えてしまうこともあります。だからこそ、丁寧に、真摯にデータと向き合ってグラフを作ってあげてくださいね。……あ、なんだか少し真面目な話になりすぎてしまいました。


Hirokiのアイコン
【Hiroki】 いえ、すごく勉強になりました!僕も、見た目が綺麗で、かつ正確に伝わるグラフが作れるように練習してみます。


Yukiのアイコン
【Yuki】 ええ、応援しています。もし分からないことがあったら、いつでも聞いてくださいね。夜はまだ長いですから、自分のペースでゆっくり試してみてください。

参考リソース



< データ分析
コラム一覧に戻る
API >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
● 高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!



AIアシスタント Yuki