[解決済み] 複数の凡例エントリを持つ Matplotlib ヒストグラム
2022-02-16 11:21:45
質問
ヒストグラムを作成するコードで、3種類のフィールド(低、中、高)を識別するものがあります。
import pylab as plt
import pandas as pd
df = pd.read_csv('April2017NEW.csv', index_col =1)
df1 = df.loc['Output Energy, (Wh/h)'] # choose index value and Average
df1['Average'] = df1.mean(axis=1)
N, bins, patches = plt.hist(df1['Average'], 30)
cmap = plt.get_cmap('jet')
low = cmap(0.5)
medium =cmap(0.25)
high = cmap(0.8)
for i in range(0,4):
patches[i].set_facecolor(low)
for i in range(4,11):
patches[i].set_facecolor(medium)
for i in range(11,30):
patches[i].set_facecolor(high)
plt.xlabel("Watt Hours", fontsize=16)
plt.ylabel("Households", fontsize=16)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
ax = plt.subplot(111)
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
plt.show()
で、これを生成します。
3色の凡例を入れるには?
どのように解決するのですか?
凡例は自分で作成する必要があります。そのために、図に描かれていない矩形(いわゆるプロキシアーティスト)をいくつか作成します。
#create legend
handles = [Rectangle((0,0),1,1,color=c,ec="k") for c in [low,medium, high]]
labels= ["low","medium", "high"]
plt.legend(handles, labels)
完全な例です。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectangle
data = np.random.rayleigh(size=1000)*35
N, bins, patches = plt.hist(data, 30, ec="k")
cmap = plt.get_cmap('jet')
low = cmap(0.5)
medium =cmap(0.25)
high = cmap(0.8)
for i in range(0,4):
patches[i].set_facecolor(low)
for i in range(4,11):
patches[i].set_facecolor(medium)
for i in range(11,30):
patches[i].set_facecolor(high)
#create legend
handles = [Rectangle((0,0),1,1,color=c,ec="k") for c in [low,medium, high]]
labels= ["low","medium", "high"]
plt.legend(handles, labels)
plt.xlabel("Watt Hours", fontsize=16)
plt.ylabel("Households", fontsize=16)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.gca().spines["top"].set_visible(False)
plt.gca().spines["right"].set_visible(False)
plt.show()
関連
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み] Matplotlib で凡例をプロットの外側に配置する方法
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] IPythonノートブックmatplotlibプロットをインラインで行う方法
-
[解決済み】Matplotlibで図のタイトルと軸ラベルのフォントサイズを設定するには?
-
[解決済み] matplotlib のプロットでフォントサイズを変更する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
python call matlab メソッドの詳細
-
Python jiabaライブラリの使用方法について説明
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
PythonでECDSAを実装する方法 知っていますか?
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件