[解決済み] Matplotlib - 各ビンにラベルを付ける
2023-07-05 08:30:10
質問
現在、Matplotlibを使用してヒストグラムを作成しています。
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as pyplot
...
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1,)
n, bins, patches = ax.hist(measurements, bins=50, range=(graph_minimum, graph_maximum), histtype='bar')
#ax.set_xticklabels([n], rotation='vertical')
for patch in patches:
patch.set_facecolor('r')
pyplot.title('Spam and Ham')
pyplot.xlabel('Time (in seconds)')
pyplot.ylabel('Bits of Ham')
pyplot.savefig(output_filename)
X軸のラベルをもう少し意味のあるものにしたいのですが。
まず、ここのx軸の刻みは5刻みに制限されているようです。私が何をしようとも、これを変更することはできないようです - xticklabels を追加しても、それは最初の 5 つだけを使用します。Matplotlib がどのようにこれを計算するのか分かりませんが、範囲/データから自動計算されるのでしょうか?
x-tickラベルの解像度を上げる方法はありますか? - を各バー/ビンに対して 1 つにするところまででも、解像度を上げることができる方法はありますか?
(理想的には、私は秒がマイクロ秒/ミリ秒で再フォーマットされることを望みますが、それはまた別の日のための質問です)。
第二に、私は というラベルの付いた各バーが欲しいです。 - で、そのビンの実際の数と、すべてのビンの合計のパーセンテージを表示します。
最終的な出力はこのようになります。
Matplotlibでそのようなことは可能でしょうか?
乾杯。 Victor
どのように解決するのですか?
もちろんです。ティックを設定するには、ちょうど、まあ... ティックを設定する (
matplotlib.pyplot.xticks
または
ax.set_xticks
). (また、パッチのフェイスカラーを手動で設定する必要はありません。キーワード引数を渡すだけでよいのです)。
残りの部分については、ラベル付けでもう少し凝ったことをする必要がありますが、matplotlibはそれをかなり簡単にしてくれます。
例として
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FormatStrFormatter
data = np.random.randn(82)
fig, ax = plt.subplots()
counts, bins, patches = ax.hist(data, facecolor='yellow', edgecolor='gray')
# Set the ticks to be at the edges of the bins.
ax.set_xticks(bins)
# Set the xaxis's tick labels to be formatted with 1 decimal place...
ax.xaxis.set_major_formatter(FormatStrFormatter('%0.1f'))
# Change the colors of bars at the edges...
twentyfifth, seventyfifth = np.percentile(data, [25, 75])
for patch, rightside, leftside in zip(patches, bins[1:], bins[:-1]):
if rightside < twentyfifth:
patch.set_facecolor('green')
elif leftside > seventyfifth:
patch.set_facecolor('red')
# Label the raw counts and the percentages below the x-axis...
bin_centers = 0.5 * np.diff(bins) + bins[:-1]
for count, x in zip(counts, bin_centers):
# Label the raw counts
ax.annotate(str(count), xy=(x, 0), xycoords=('data', 'axes fraction'),
xytext=(0, -18), textcoords='offset points', va='top', ha='center')
# Label the percentages
percent = '%0.0f%%' % (100 * float(count) / counts.sum())
ax.annotate(percent, xy=(x, 0), xycoords=('data', 'axes fraction'),
xytext=(0, -32), textcoords='offset points', va='top', ha='center')
# Give ourselves some more room at the bottom of the plot
plt.subplots_adjust(bottom=0.15)
plt.show()
<イグ
関連
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] IPythonノートブックmatplotlibプロットをインラインで行う方法
-
[解決済み】Matplotlibで図のタイトルと軸ラベルのフォントサイズを設定するには?
-
[解決済み] matplotlib のプロットでフォントサイズを変更する方法
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Matplotlib - X 軸のラベルを下方向に移動し、X 軸のティックを移動しない
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] matplotlibでpcolorを使ったヒートマップ?