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

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

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

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

Python 3.x

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

pandas

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

Q&A

解決済

1回答

5314閲覧

matplotlib x軸を1時間ごとに表したい

banana_milk

総合スコア16

Matplotlib

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

Python 3.x

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

pandas

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

0グッド

1クリップ

投稿2018/12/25 03:38

編集2018/12/25 03:44

前提・実現したいこと

1日おきに各カテゴリのデータ数を集計してグラフ化したプログラムを,
1時間おきに集計してグラフ化できるようにしたい.

該当のソースコード

Python

1from datetime import datetime 2import pandas as pd 3import matplotlib.pyplot as plt 4test_df = pd.read_csv('hoge.csv') 5test_df["label"] = test_df['label'].tolist() 6label_1_df = test_df.loc[test_df["label"] == 1] 7tmp = [] 8for i in label_1_df["date"]: 9 date_split = i.split(" ") 10 tmp.append(datetime.strptime(date_split[0], '%Y/%m/%d')) 11 12label_1_df["date"] = tmp 13print(label_1_df.groupby("date").sum()) 14df_1 = label_1_df.groupby("date").sum() 15df_a = lanel_1_df 16df_a.to_csv('df1.csv', index=False) 17df_1.to_csv('df1.csv', index=False) 18n = label_1_df.groupby("date").sum()

これをあと5回した後に

Python

1import matplotlib.dates as mdates 2 3fig = plt.figure() 4ax = fig.add_subplot(1,1,1) 5days = mdates.DayLocator() 6daysFmt = mdates.DateFormatter('%m-%d') 7plt.plot(n['label'],label="hoge",linewidth = 5.0) 8plt.plot(o['label'],label="hoge2",linewidth = 5.0) 9plt.plot(p['label'],label="hoge3",linewidth = 5.0) 10plt.plot(q['label'],label="hoge4",linewidth = 5.0) 11plt.plot(r['label'],label="hoge5",linewidth = 5.0) 12plt.plot(s['label'],label="hoge6",linewidth = 5.0) 13ax.xaxis.set_major_locator(days) 14ax.xaxis.set_major_formatter(daysFmt) 15plt.legend() 16plt.savefig('hoge.png') 17plt.show() 18plt.rcParams['figure.figsize'] = (35, 30) 19

ここでグラフ化しています
x軸は1時間ごとで表したいです
y軸はその時間のデータの合計数です

今回は現在1日おきにしているx軸を1時間おきに変えたいということです...
入っている時間データは年月日時間分まで入っています

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

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

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

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

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

y_waiwai

2018/12/25 04:35

で、しつもんはなんでしょうか
guest

回答1

0

ベストアンサー

ソースを見る限り、

Python

1tmp = [] 2for i in label_1_df["date"]: 3 date_split = i.split(" ") 4 tmp.append(datetime.strptime(date_split[0], '%Y/%m/%d')) 5label_1_df["date"] = tmp 6 7n = label_1_df.groupby("date").sum()

の部分にて文字列からDATE部のみをDateTime型に変換して、groupby()することで1日毎のデータを集計しているようですので、
この
tmp.append(datetime.strptime(date_split[0], '%Y/%m/%d'))
の部分にTIME(Hour)データも含めた DateTime型にするとよいのではないでしょうか。

あと、グラフの描画部にて

  • DateLocaterHourLocator に変更
  • DateFormatter() にて時刻も記述するように変更

をする必要があります。

投稿2018/12/25 06:39

magichan

総合スコア15898

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

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

banana_milk

2018/12/25 07:12

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問