213

Pythonでは、Matplotlibを使用して、空の円を含む散布図をどのようにプロットできますか?目標は、によってプロットされた色付きのディスクのいくつかの周りに空の円scatter()を描画して、それらを強調表示することです。理想的には、色付きの円を再描画する必要はありません。

私はfacecolors=None無駄にしようとしました。

4

6 に答える 6

312

散布図のドキュメントから:

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()

サンプル画像

注:他のタイプのプロットについては、との使用に関するこの投稿を参照してください。markeredgecolormarkerfacecolor

于 2010-11-10T16:07:16.127 に答える
83

これらは機能しますか?

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')

サンプル画像

于 2010-11-10T15:52:38.817 に答える
15

別の方法は次のとおりです。これにより、現在の軸、プロット、画像などに円が追加されます。

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"ます)。

于 2010-11-23T12:20:06.587 に答える
1

したがって、特定の基準に適合するいくつかのポイントを強調したいと思います。Prelude のコマンドを使用して、強調表示されたポイントの 2 番目の散布図を空の円で作成し、最初の呼び出しですべてのポイントをプロットすることができます。大きな空の円が小さな塗りつぶされた円を囲むように、s パラメータが十分に小さいことを確認してください。

もう 1 つのオプションは、散布図を使用せず、円/楕円コマンドを使用してパッチを個別に描画することです。これらは matplotlib.patches にあります。円、長方形などを描画する方法のサンプル コードを次に示します。

于 2010-11-10T16:35:45.080 に答える