Pythonで空の円を備えた散布図を行うにはどうすればよいですか?
-
30-09-2019 - |
質問
Pythonで、Matplotlibを使用して、どのようにして散布することができますか 空 円をプロットしますか?目標は、空の円を描くことです いくつかの すでにプロットされている色のディスクの scatter()
, 、それらを強調するために、理想的には色のついた円を再描画する必要がありません。
私は試した facecolors=None
, 、 無駄に。
解決
から ドキュメンテーション 散布用:
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
.
他のヒント
これらは機能しますか?
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')
別の方法は次のとおりです。これは、現在の軸、プロット、画像などに円を追加します。
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
次の値を受け入れます:['full' | 「左」| 「正しい」| 「ボトム」| 「トップ」| '無し'
使用する際に留意すべき重要なことが2つあります fillstyle
,
1)MFCがあらゆる種類の価値に設定されている場合、それは優先されるでしょう。したがって、fillstyleを「なし」に設定した場合、それは有効になりません。したがって、MFCを塗りつぶすことを避けてください
2)マーカーエッジの幅を制御することをお勧めします(使用 markeredgewidth
また mew
)マーカーが比較的小さく、エッジの幅が厚い場合、マーカーはそうではないにしても、マーカーが充填されているように見えるためです。
以下は、エラーバーを使用した例です。
myplot.errorbar(x=myXval, y=myYval, yerr=myYerrVal, fmt='o', fillstyle='none', ecolor='blue', mec='blue')
ですから、特定の基準に適合するいくつかのポイントを強調したいと思います。プレリュードのコマンドを使用して、空の円とすべてのポイントをプロットするための最初の呼び出しで、ハイライトポイントの2番目の散布図を実行できます。より大きな空の円が塗りつぶされた円を囲むのに十分に小さいことを確認してください。
もう1つのオプションは、Circle/Ellipseコマンドを使用して、散布を使用してパッチを個別に描画しないことです。これらはmatplotlib.patchesにあり、 ここ サークルの長方形などのサンプルコードです。