Pythonでは、Matplotlibを使用して、空の円を含む散布図をどのようにプロットできますか?目標は、理想的には色付きの円を再描画することなく、それらを強調表示するために、によってすでにプロットされている色付き円盤の一部の周りに空の円を描くscatter()
ことです。
試しましたがfacecolors=None
、役に立ちませんでした。
Pythonでは、Matplotlibを使用して、空の円を含む散布図をどのようにプロットできますか?目標は、理想的には色付きの円を再描画することなく、それらを強調表示するために、によってすでにプロットされている色付き円盤の一部の周りに空の円を描くscatter()
ことです。
試しましたがfacecolors=None
、役に立ちませんでした。
回答:
scatter のドキュメントから:
Optional kwargs control the Collection properties; in particular:
edgecolors:
The string ‘none’ to plot faces with no outlines
facecolors:
The string ‘none’ to plot unfilled outlines
以下を試してください:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(60)
y = np.random.randn(60)
plt.scatter(x, y, s=80, facecolors='none', edgecolors='r')
plt.show()
注:他のタイプのプロットについては、およびの使用に関するこの投稿を参照してください。markeredgecolor
markerfacecolor
facecolors=None
機能しないことです。
markerfacecolor='none'
は、これが今のやり方です。
markerfacecolor='none'
追加しようとしてマーカーが表示されない場合markeredgewidth=1.0
%matplotlib inline
との標準インポートを実行した後、Seabornで使用することもできます。import matplotlib.pyplot as plt
次に、Seabornをプロットのデフォルトに設定しますimport seaborn as sns; sns.set()
これらはうまくいくでしょうか?
plt.scatter(np.random.randn(100), np.random.randn(100), facecolors='none')
またはplot()を使用
plt.plot(np.random.randn(100), np.random.randn(100), 'o', mfc='none')
plot
代わりに使用する場合に役立ちますscatter
これが別の方法です。これにより、現在のAxes、プロットまたはイメージなどに円が追加されます。
from matplotlib.patches import Circle # $matplotlib/patches.py
def circle( xy, radius, color="lightsteelblue", facecolor="none", alpha=1, ax=None ):
""" add a circle to ax= or current axes
"""
# from .../pylab_examples/ellipse_demo.py
e = Circle( xy=xy, radius=radius )
if ax is None:
ax = pl.gca() # ax = subplot( 1,1,1 )
ax.add_artist(e)
e.set_clip_box(ax.bbox)
e.set_edgecolor( color )
e.set_facecolor( facecolor ) # "none" not None
e.set_alpha( alpha )
(図の円は楕円に押しつぶされimshow aspect="auto"
ます)。
matplotlib 2.0にはと呼ばれるパラメーターがあり、fillstyle
マーカーを塗りつぶす方法をより適切に制御できます。私の場合、エラーバーで使用しましたが、一般的にマーカーで機能します
http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.html
fillstyle
次の値を受け入れます。「左」| 「正しい」| 'ボトム' | 'トップ' | 'なし']
を使用する場合は、2つの重要な点に注意してくださいfillstyle
。
1)mfcが任意の種類の値に設定されている場合、それが優先されます。したがって、fillstyleを 'none'に設定した場合、効果はありません。したがって、mfcをfillstyleと組み合わせて使用しないでください。
2)マーカーのエッジ幅を制御したい場合があります(markeredgewidth
またはを使用mew
)。マーカーが比較的小さく、エッジ幅が厚い場合、マーカーは塗りつぶされていないように見えます。
以下はエラーバーの使用例です。
myplot.errorbar(x=myXval, y=myYval, yerr=myYerrVal, fmt='o', fillstyle='none', ecolor='blue', mec='blue')
Gary Kerrの例に基づいて、ここで提案されているように、次のコードで指定された値に関連する空の円を作成できます。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.markers import MarkerStyle
x = np.random.randn(60)
y = np.random.randn(60)
z = np.random.randn(60)
g=plt.scatter(x, y, s=80, c=z)
g.set_facecolor('none')
plt.colorbar()
plt.show()
.scatter()
ができなかったときに私にとってはうまくいきました。コンテキストとして、カラーマップ(c=z, cmap='jet'
)も適用しました。