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

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回答

25454閲覧

Python, matplotlib で時間軸(HH:MM:SS)にする方法

Non-Face

総合スコア11

Matplotlib

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

Python 3.x

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

Python

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

0グッド

1クリップ

投稿2018/08/26 19:28

編集2018/08/27 06:37

現在PythonでMatplotlibを使ってグラフ作成をしているのですが、グラフの軸とデータがうまく組み合わせられないので質問させていただきました。
下記は完成時のイメージ
成功した場合のイメージ
このグラフの様にY軸を00:00:00から24:00:00に固定し、それにデータを合わせていく形にしたいです。そしてX軸はデータのない日にちでも表示され毎日表示されるようにしたいと思っています。

いろいろ調べてみましたがよくわからなかったので簡単なプログラムを下に書きます。

python

1import matplotlib.pyplot as plt 2from matplotlib impost dates 3 4xlist=['2018-08-24', '2018-08-24', '2018-08-25', '2018-08-25', '2018-08-25', '2018-08-23', '2018-08-23', '2018-08-21', '2018-08-21', '2018-08-19', '2018-08-17', '2018-08-05', '2018-07-28', '2018-07-18', '2018-07-18', '2018-07-17', '2018-07-15', '2018-07-11', '2018-07-10', '2018-07-09'] 5 6ylist=['19:46:00', '3:30:00', '3:29:00', '3:26:00', '2:52:00', '14:36:00', '2:45:00', '23:27:00', '3:56:00', '4:20:00', '2:49:00', '22:47:00', '22:22:00', '13:52:00', '1:49:00', '17:48:00', '15:22:00', '2:12:00', '18:27:00', '21:15:00'] 7 8plt.scatter(xlist,ylist) 9plt.gcf().autofmt_xdate() 10plt.show() 11

結果
という結果になりました。
ご覧のようにY軸はバラバラで、X軸の日にちは飛び飛びです。
これをY軸はHH:MM:SSに、X軸はデータにない日にちも表示し毎日を表示したいのですが解決方法がわかるかたはご教示お願いします

実行環境

windows 10
python 3.6.6
matplotlib 2.2.3

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

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

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

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

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

y_waiwai

2018/08/26 22:01

質問が表示されてません。編集ができるので書き直してみてください
Non-Face

2018/08/27 04:52

ボケていたようです。ご指摘ありがとうございました。
guest

回答1

0

ベストアンサー

xlistおよびylistを文字列ではなく datetime型のデータに変換し、
matplotlibの X軸およびY軸に datetime用のLocatorおよびFormatter を設定するとよいかと思います

Python

1import matplotlib.pyplot as plt 2from matplotlib import dates as mdates 3from datetime import datetime as dt 4 5xlist=['2018-08-24', '2018-08-24', '2018-08-25', '2018-08-25', '2018-08-25', '2018-08-23', '2018-08-23', '2018-08-21', '2018-08-21', '2018-08-19', '2018-08-17', '2018-08-05', '2018-07-28', '2018-07-18', '2018-07-18', '2018-07-17', '2018-07-15', '2018-07-11', '2018-07-10', '2018-07-09'] 6 7ylist=['19:46:00', '3:30:00', '3:29:00', '3:26:00', '2:52:00', '14:36:00', '2:45:00', '23:27:00', '3:56:00', '4:20:00', '2:49:00', '22:47:00', '22:22:00', '13:52:00', '1:49:00', '17:48:00', '15:22:00', '2:12:00', '18:27:00', '21:15:00'] 8 9 10# xlist,ylistを datetime型に変換 11xlist = [dt.strptime(d, '%Y-%m-%d') for d in xlist] 12ylist = [dt.strptime(d, '%H:%M:%S') for d in ylist] 13# データをプロット 14ax = plt.subplot() 15ax.scatter(xlist,ylist) 16# X軸の設定 (目盛りを1日毎,範囲は 7/9~8/24とする) 17ax.xaxis.set_major_locator(mdates.DayLocator()) 18ax.xaxis.set_major_formatter(mdates.DateFormatter("%m/%d")) 19ax.set_xlim([dt.strptime('2018-7-9','%Y-%m-%d'), dt.strptime('2018-8-24', '%Y-%m-%d')]) 20# Y軸の設定 (目盛りを1時間毎,範囲は 0:00~23:59とする) 21ax.yaxis.set_major_locator(mdates.HourLocator()) 22ax.yaxis.set_major_formatter(mdates.DateFormatter("%H:%M")) 23ax.set_ylim([dt.strptime('00:00','%H:%M'), dt.strptime('23:59','%H:%M')]) 24 25plt.xticks(rotation=90) 26plt.show()

投稿2018/08/27 06:55

magichan

総合スコア15898

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

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

Non-Face

2018/08/27 14:45

ご回答ありがとうございました。解決することができました。 matplotlibではできないのかな?と考えていましたが方法があることを知れてよかったです。後に同じようなものですがBokehを使った質問をする予定ですので、もしBokehもご存知でしたらまたよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問