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

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

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

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

Q&A

解決済

1回答

325閲覧

python グラフ X軸目盛の表示エリアを広げたい

yk3125

総合スコア91

Python

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

0グッド

0クリップ

投稿2023/02/24 07:16

実現したいこと

グラフ X軸目盛の表示エリアを広げたい

前提

pythonで下記のプログラムを実行させると、グラフが表示されるのですが
X軸の時間がyyyy/mm/dd hh:mm 全てが表示されない
表示エリアを広げたいのですが、いろいろと検索してみたのですが見つけることができませんでした。
分かる方がいれば教えてください。
又、この辺の解説があるサイトがあれば教えてください。

イメージ説明

該当のソースコード

python

1@app.route('/graph_ktemp') 2def graph_ktemp(): 3 plt.cla() 4 fig = plt.figure(figsize=(6, 5), dpi=72, facecolor='skyblue', linewidth=10, edgecolor='green') 5 ax = fig.add_subplot() 6 x_data = [] 7 y_data = [] 8 tblSAD = tableSDA.query.filter(tableSDA.KYMD.between('2022/01/01 00:00:00', '2022/01/08 00:00:00')).all() 9 for row in tblSAD: 10 print(row.KYMD, row.ktemp) 11 x_data.append(dt.strptime(row.KYMD, '%Y/%m/%d %H:%M:%S')) 12 y_data.append(row.ktemp) 13 ax.plot(x_data, y_data) 14 15 xmin = datetime.datetime.strptime("2022/01/01 00:00:00", '%Y/%m/%d %H:%M:%S') 16 xmax = datetime.datetime.strptime("2022/01/08 00:00:00", '%Y/%m/%d %H:%M:%S') 17 ax.set_xlim(xmin,xmax) 18 ax.xaxis.set_major_locator(mdates.HourLocator(byhour=range(0, 24, 12), tz=None)) # 12時間毎に表示 19 ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y/%m/%d %H:%M')) 20 ax.set_position([0.1, 0.22, 0.8, 0.68]) 21 labels = ax.get_xticklabels() 22 plt.setp(labels, rotation=90, fontsize=10); 23 ax.grid() 24 25 canvas = FigureCan![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-02-24/ac4fc034-7ebd-4087-ba5a-b41fbe195b3e.png)vasAgg(fig) 26 png_output = BytesIO() 27 canvas.print_png(png_output) 28 data = png_output.getvalue() 29 30 response = make_response(data) 31 response.headers['Content-Type'] = 'image/png' 32 return response 33

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

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

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

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

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

melian

2023/02/24 07:47

ax.grid() の直後に plt.tight_layout() を追加してみるとどうなりますでしょうか?
guest

回答1

0

ベストアンサー

subplots_adjustで四方に余裕を持たせることができます。

Python

1import matplotlib.pyplot as plt 2import matplotlib.dates as mdates 3import random 4import pandas as pd 5 6xs = pd.date_range(start='2022-01-01', end='2022-01-08', freq='3H') 7ys = [random.randint(1,10) for _ in range(len(xs))] 8 9fig = plt.figure(facecolor='skyblue') 10ax = fig.add_subplot() 11ax.plot(xs, ys) 12 13ax.set_xlim(xs[0], xs[-1]) 14ax.xaxis.set_major_locator(mdates.HourLocator(byhour=range(0, 24, 12), tz=None)) # 12時間毎に表示 15ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y/%m/%d %H:%M')) 16ax.set_position([0.1, 0.22, 0.8, 0.68]) 17labels = ax.get_xticklabels() 18plt.setp(labels, rotation=90, fontsize=10); 19ax.grid() 20 21fig.subplots_adjust(bottom=0.4) 22plt.savefig('ret.png')

イメージ説明

投稿2023/02/24 07:47

編集2023/02/24 08:00
can110

総合スコア38268

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問