🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

Q&A

解決済

1回答

4803閲覧

Pythonのmatplotlibでalpha使用時に凡例のマーク表示を透明化せずに表示する方法がわかりません

ameiba

総合スコア8

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

0グッド

1クリップ

投稿2019/10/12 00:42

前提・実現したいこと

現在、matplotlibのplot_dateを使用してX軸に時間データ、Y列に適当な値を用いてプロットし、グラフを出力しています。
プロット時にalphaで透明化を行っているのですが、凡例のマーカー表示(A,B)も透明化してしまいます。
そこで凡例のマーカーは透明化させずに表示したいのですがうまくできません。

イメージ説明

matplotlibのplot_dateにおいてalpha設定プロット時に凡例のマーカーは透明化させずに表示させるにはどうすればいいのでしょうか。

該当のソースコード

Python

1from datetime import datetime 2import matplotlib.pyplot as plt 3xa = [] 4xb = [] 5xa.append(datetime.strptime("2019-01-01 12:06:10",'%Y-%m-%d %H:%M:%S')) 6xa.append(datetime.strptime("2019-01-01 12:06:15",'%Y-%m-%d %H:%M:%S')) 7xa.append(datetime.strptime("2019-01-01 12:06:20",'%Y-%m-%d %H:%M:%S')) 8xb.append(datetime.strptime("2019-01-01 12:07:10",'%Y-%m-%d %H:%M:%S')) 9xb.append(datetime.strptime("2019-01-01 12:07:15",'%Y-%m-%d %H:%M:%S')) 10xb.append(datetime.strptime("2019-01-01 12:07:20",'%Y-%m-%d %H:%M:%S')) 11 12ya = [1,2,3] 13yb = [5,6,7] 14 15fig = plt.figure(figsize = (8,5)) 16ax = fig.add_subplot(1,1,1) 17ax.plot_date(xa,ya,label = ["A"], ms = 10, alpha = 0.1) 18ax.plot_date(xb,yb,label = ["B"], ms = 10, alpha = 0.1) 19leg = ax.legend() 20plt.show()

試したこと

他のプロットデータを用いて散布図のscatterで試した時はplt.show()の前に以下のコードを追記することで凡例マーカー表示の透明化を防ぐことができましたが、plot_dateではできませんでした。

append

1for lh in leg.legendHandles: 2 lh.set_alpha(1)

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

言語:Python3.7.1
エディタ:Spyder3.3.2(Anaconda3付属)
OS:Windows10

Spyder3.3.2のコンソール上でコードを実行

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

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

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

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

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

siruku6

2019/10/12 05:07

質問としては、グラフ内に表示するプロットは半透明にしたいけれども、プロットの凡例は半透明にしない方法が知りたいということでしょうか? 基本的には、グラフ内の色と凡例の色は同一になると思いますので、どうしてもということであれば、一切データが入っていない配列をプロットし、そのプロットに対して、透明度のない色を設定することが考えられますが。。。
ameiba

2019/10/16 11:28

すみません返信遅れました…! 質問内容はご認識の通りです。 なるほど、その考えはありませんでした! データなしとデータありで同じ色を指定してあげれば辻褄が合いますね。 ありがとうございます!
guest

回答1

0

自己解決

sirukuさんの回答を実施

投稿2019/10/19 09:33

ameiba

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問