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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3150閲覧

matplotlib x軸の時間を縦書きにしたい

hidemomo

総合スコア31

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/10/18 10:12

編集2018/10/18 10:55

実現したいこと

python初心者です。
x軸の時間を「縦書き」にし「凡例」をつけて「2つの時系列データ」を図示化したいです。可能ならば「図」自体を大きくしたいです。

発生している問題

1.時間は「横書き」で表記されますがCannot compare type 'Timestamp' with type 'float'エラーが出ます。
2.凡例が出ません

環境

windows10
python:3.6

該当のソースコード

python

1import pandas as pd 2import matplotlib.pyplot as plt 3%matplotlib inline 4 5df =pd.read_csv('test.csv') 6df['datetime'] = pd.to_datetime(df['datetime']) 7 8####dfの中身 #### 9   datetime       val_1 val_2 class 100 2018-10-10 14:12:00 295 507 1 111 2018-10-10 14:13:00 295 500 1 122 2018-10-10 14:14:00 295 496 1 13(略) 14 15#####問題のコード### 16 17x = df['datetime'] 18s1 =plt.plot(x, df['val_1'],label='val_1', color='r') 19s2 =plt.plot(x, df['val_2'],label='val_2', color='g') 20 21plt.xticks(df['datetime'],rotation=90, size='small') 22plt.legend('val_1','val_2') 23plt.show()

ご教示頂けると助かります。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

x軸の時間を「縦書き」にし「凡例」をつけて「2つの時系列データ」し「図を大きくした」サンプルコードを貼りました。

データ作成

python

1import csv 2from datetime import datetime, timedelta 3 4data = [] 5for dt in np.arange(datetime(2018, 10, 18, 0), 6 datetime(2018, 10, 19, 23), 7 timedelta(hours=1)).astype(datetime): 8 a, b = np.random.randint(0, 10, 2) 9 data.append({'datetime': dt.isoformat(), 'val_1': a, 'val_2': b, 'class': 1}) 10 11with open('data.csv', 'w', newline='') as f: 12 writer = csv.DictWriter(f, fieldnames=data[0].keys()) 13 writer.writeheader() 14 writer.writerows(data)

データ読み込み、描画

python

1import pandas as pd 2import matplotlib.pyplot as plt 3 4df = pd.read_csv('data.csv', parse_dates=['datetime']) 5x = np.arange(len(df['datetime'])) 6 7# 図の大きさ設定 8fig = plt.Figure(figsize=(10, 6)) 9# 折れ線グラフ描画 10plt.plot(x, df['val_1'], label='val_1', color='r') 11plt.plot(x, df['val_2'], label='val_2', color='g') 12# x 軸のラベル 13dt_labels = [dt.strftime('%H:%M') for dt in df['datetime']] # ラベル一覧作成 14# 4つおきにラベルを表示する。 15plt.xticks(x[::4], dt_labels[::4], rotation=90, size='small') 16# 判例表示 17plt.legend() 18plt.show()

イメージ説明

細かい調整は matplotlib のリファレンスを見て、行ってください。

投稿2018/10/18 11:36

編集2018/10/18 11:38
tiitoi

総合スコア21956

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

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

hidemomo

2018/10/18 14:19

早速の回答ありがとうございます。 データの描画だけでなく、データ作成まで行っていただき感謝します。 じっくりコードを勉強させていただきます。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問