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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

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

解決済

matplotlibの描画で任意の時間のみ非表示で描画したい

chocotruffe
chocotruffe

総合スコア7

Python 3.x

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

2回答

0評価

0クリップ

276閲覧

投稿2022/01/21 04:22

編集2022/01/21 21:47

前提・実現したいこと

Pythonのmatplotlibを用いたグラフの描画方法について質問です。
現在、時系列データの描画を目的としたコーディングをしています。
実現したいことは、時系列データの取得時刻が9:00から20:00まで1時間おきに取得できているのですが、
matplotlibにてx軸を時間にした描画を行うと21:00~8:00までのデータ取得をしていない日時の時系列データの間隔が出てきていしまいます。

グラフを連続的に視認したいので、
21:00~8:00までの間の描画を非表示にする方法をご教示いただけないでしょうか。

発生している問題・エラーメッセージ

21:00~8:00までの間のデータが取得できない時間帯の描画がされるため、
横に伸ばしたようなグラフが出来上がる。
そのため、21:00~8:00までの描画を非表示にしたい。

下記の"該当のソースコード"中でのコメントアウトは「#######」としています。
(#のみですと、teratail様の仕様上、タグとして認識され、太文字・フォントサイズが変わるなど見づらいためです。)

該当のソースコード

import pandas as pd
import openpyxl
import numpy as np
import matplotlib.pyplot as plt

######## グローバル変数
input_file_name = "Book1.xlsx"
######## データの読み込み
input_book = pd.ExcelFile(input_file_name, engine="openpyxl")
input_sheet_name = input_book.sheet_names
df = input_book.parse(input_sheet_name[0])

####### 日付情報をdatetimeの型に変換
df["日付"] = pd.to_datetime(df["日付"])

######## 値の代入
np_df = df["データ"]
x = pd.to_datetime(df['日付'], format='%Y-%m') #日時情報を代入
y = np_df #2列目の値を入れる

######## 描画の初期設定準備
figure_ = plt.figure(1, figsize=(15,10))
axes_ = figure_.add_subplot(111)

######## x軸、y軸、プロットの模様、凡例の名称を設定
axes_.plot(x, y, 'o-', label="データ")
plt.xlabel("Time")
plt.ylabel("Value")

######## 描画する
plt.show()

Excelのデータ(Book1.xlsx)

※下記データの補足
column = ["日付", "データ"]※一番左の番号はindexです。

0 2022/1/1 9:00 100
1 2022/1/1 10:00 250
2 2022/1/1 11:00 300
3 2022/1/1 12:00 450
4 2022/1/1 13:00 600
5 2022/1/1 14:00 800
6 2022/1/1 15:00 700
7 2022/1/1 16:00 400
8 2022/1/1 17:00 150
9 2022/1/1 18:00 200
10 2022/1/1 19:00 270
11 2022/1/1 20:00 300
12 2022/1/2 9:00 200
13 2022/1/2 10:00 350
14 2022/1/2 11:00 400
15 2022/1/2 12:00 550
16 2022/1/2 13:00 700
17 2022/1/2 14:00 900
18 2022/1/2 15:00 800
19 2022/1/2 16:00 500
20 2022/1/2 17:00 250
21 2022/1/2 18:00 300
22 2022/1/2 19:00 370
23 2022/1/2 20:00 400
24 2022/1/3 9:00 300
25 2022/1/3 10:00 450
26 2022/1/3 11:00 500
27 2022/1/3 12:00 650
28 2022/1/3 13:00 800
29 2022/1/3 14:00 1000
30 2022/1/3 15:00 900
31 2022/1/3 16:00 600
32 2022/1/3 17:00 350
33 2022/1/3 18:00 400
34 2022/1/3 19:00 470

試したこと

上記コードを試し、他サイトやブログ等を見ましたが、
解決策が見当たらなかったため、ご教示いただけると嬉しいです。

補足情報(FW/ツールのバージョンなど)

OS: Window10
開発環境: VisualStudio2019
バージョン: Python3.6

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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