質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

3155閲覧

Pandas DataFrameの折れ線グラフでY軸に軸名を書きたい

Kumazaemon

総合スコア5

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/01/09 04:41

編集2021/01/10 00:29

インデックスが時系列データ(列ラベルがtime)で、5つの列が含まれた1つのデータフレーム(df)があります。

こちらがdfの冒頭部分です(行はずっと続く)。

|列1|列2|列3|列4|列5|列6|
|:--|:--:|--:|
||A|B|C|D|E|F|
|time||||||
|2019-12-16|8.4|22.1|22.3|21.6|20.8|
|2019-12-17|11.4|21.7|23.0|21.3|20.5|
|2019-12-18|11.3|22.6|23.0|22.3|20.8|
|2019-12-19|7.8|20.9|22.0|20.5|20.3|
|2019-12-20|8.2|24.4|24.2|23.7|21.1|

df.plot()
とすると、X軸にはインデックスが入り、インデックス名(time)がX軸名として表示されます。
(すみません、PC画面ではX軸の下にtimeと表示されているのですが、savefigしたら切れてしまっています。timeの頭の先っぽだけ見えています…)

今の状態

Y軸にも、'temperature'のような名前を表示(新規追加)させたいです。
pandas.plotの引数を見てもできそうにありません。
seabornでも見てみましたが、なさそうです。

matplotlibでは以下でできます。
しかし、データフレームのほかの情報(特に凡例)が反映されず(=pandas.plotではすでに認識されているlegendを再設定しなくてはならず)作業が増えるので、pandas.plotで目的が果たされるならば、避けたいです。

python

1fig = plt.figure() 2ax = fig.add_subplot(1,1,1) 3ax.plot(df) 4ax.set_ylabel('temperature')

goal
pandasやseabornなどのpandasデータフレームをダイレクトに使った可視化手法で、Y軸名を記す方法はないのでしょうか。
(もしかしたら、データフレームの工夫などでできるのかも、と思ってお尋ねしています)

Windows10で、Anaconda(1.9.12)から、Jupyternotebookを使用しています。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/01/09 06:54

データと現在のグラフ、また理想のグラフを掲載すると回答者へ分かりやすくなるかと思います。
Kumazaemon

2021/01/10 00:37

meg_さん、ありがとうございます! 初心者で、質問欄に画像やコードを追加する方法が理解できていなかったのですが、調べて追加しました。 こんな感じなら少しマシでしょうか。 siruku6さん、ありがとうございます! 質問のポイントが不明確ですみませんでした。少し本文を修正しました。 matplotlibでlegendの設定方法がわからないのではなく、pandas.plot(かseaborn.plot)で、Y軸名を表示させることができませんか?という質問でした。 今pandas.plotを使おうとしている理由はデータフレームさえ綺麗に作っておけば、すぐにグラフを作ってくれるからです。 最終的にフォーマットの調整でmatplotlibを駆使しなくてはならないのであれば、まあ可視化部分はpandasをあきらめてmatplotlibに切り替えるのですが…。
meg_

2021/01/10 05:44

ドキュメントに載っていないのであればpandasのみでの実現は出来ないと思います。グラフの細かい設定はやはりmatplotlibでの調整が良いでしょう。
Kumazaemon

2021/01/10 06:53

meg_さん、ありがとうございます。 自己解決しましたのでクローズしました、反応に感謝感謝です!
guest

回答1

0

自己解決

いやったぁ!解決しました!
pandasはmatplotlibの薄いwrapperで、df.plotはmatplotlibのAxesのsubplotオブジェクトを返すのだそうです。
そのため、axesを読み出してそこに書き出すだけでOKです。

SOのこちらの情報が最終的な解決ルートになりました。参考まで。
https://stackoverflow.com/questions/21487329/add-x-and-y-labels-to-a-pandas-plot

そして、ググってるあいだにMatplotlibに詳しくなりました。

Python

1ax = df.plot() 2ax.set_ylabel('temperature')

こんな感じでバッチリです!
goal

投稿2021/01/10 06:50

編集2021/01/10 07:13
Kumazaemon

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siruku6

2021/01/10 07:18

>ググってるあいだにMatplotlibに詳しくなりました。 とても良いことだと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問