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

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

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

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

Q&A

解決済

1回答

2086閲覧

Python 棒グラフ X軸日付とY軸1000単位コンマ

pon244

総合スコア59

Python

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

0グッド

0クリップ

投稿2020/04/04 01:47

import matplotlib.pyplot as plt import numpy as np height1 = y height2 = y2 labels = x width = 0.4 plt.xticks(x, rotation=90) plt.bar(left, height1, color='r', width=width, align='center',label='y') plt.bar(left+width, height2, color='b', width=width, align='center',label='C') plt.legend(loc = 'upper right') plt.xticks(left + width/2, labels) plt.show()

【グラフの結果】
イメージ説明

【Xの日付結果】
イメージ説明

【したいこと】
Y軸を1000単位でコンマ、X軸の日付の00:00をなくす
【試したこと】
別のグラフで
下記を使っておりますが棒グラフの場合どのようにすればいいでしょうか・
axes_.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))

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

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

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

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

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

guest

回答1

0

ベストアンサー

x軸に関してですが、xpandas.DatetimeIndex型なのだとしたら、

Python

1labels = x

の部分を

Python

1labels = x.date

とすると良いのではないでしょうか。

(y軸に関しては、掲載されたコード、グラフの図から現象が確認できませんでした。)

Python

1import pandas as pd 2import numpy as np 3import matplotlib.pyplot as plt 4 5# 質問にデータが提示されていないので適当に作成 6N = 10 7x = pd.date_range('2020/1/1 0:00', periods=N, freq='1d') 8y = np.random.randint(10,100,N) * 1000 9y2 = np.random.randint(10,100,N) * 1000 10left = np.arange(N) 11 12# 以下は質問に掲載されたコード 13height1 = y 14height2 = y2 15labels = x.date 16 17width = 0.4 18plt.xticks(x, rotation=90) 19 20plt.bar(left, height1, color='r', width=width, align='center',label='y') 21plt.bar(left+width, height2, color='b', width=width, align='center',label='C') 22plt.legend(loc = 'upper right') 23plt.xticks(left + width/2, labels) 24plt.tight_layout() 25plt.show()

イメージ説明


【追記】
Y軸の値に3桁区切りをつけるには、(もう一つの質問で回答した)FuncFormatter() で変換するのが簡単です。

Python

1plt.gca().get_yaxis().set_major_formatter(ticker.FuncFormatter(lambda v,p: f'{int(v):,d}'))

修正済みサンプルコード

import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as ticker N = 10 x = pd.date_range('2020/1/1 0:00', periods=N, freq='1d') y = np.random.randint(10,100,N) * 1000 y2 = np.random.randint(10,100,N) * 1000 left = np.arange(N) height1 = y height2 = y2 labels = x.date width = 0.4 plt.xticks(x, rotation=90) plt.bar(left, height1, color='r', width=width, align='center',label='y') plt.bar(left+width, height2, color='b', width=width, align='center',label='C') plt.legend(loc = 'upper right') plt.xticks(left + width/2, labels) plt.gca().get_yaxis().set_major_formatter(ticker.FuncFormatter(lambda v,p: f'{int(v):,d}')) plt.tight_layout() plt.show()

イメージ説明

投稿2020/04/04 03:14

編集2020/04/04 08:58
magichan

総合スコア15898

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

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

pon244

2020/04/04 06:20

ありがとうございます! 今書いたくださったグラスのY(縦軸)の数字に3桁ずつのコンマはどうつけるのでしょうか?
magichan

2020/04/04 08:33

コンマを消したいのでなくて、付けたいのですね! 完全に勘違いしてました。回答欄に追記いたしますので、ちょっとお待ち下さい。
magichan

2020/04/04 09:00

修正コードを追記しました
pon244

2020/04/04 13:19

ありがとうございます!!
pon244

2020/04/04 13:19

できました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問