Matplotlib:如何使用pandas plot API在散点图中绘制空圆?

时间:2018-09-25 03:10:12

标签: pandas matplotlib scatter-plot

我正在尝试使用pandas api绘制散点图,其中每个点都是一个空圆,只是具有边框颜色和透明度。我在这段代码中尝试了很多调整:

 ax = ddf.plot.scatter(
        x='espvida', 
        y='e_anosestudo', 
        c=ddf['cor'],
        alpha=.2,
        marker='o');

生成的绘图如下:

Scatter plot

如果仔细观察要点:

filled points

您将看到它们具有透明的填充颜色和边框。我希望它只有一个透明的边框。我会做吗?

2 个答案:

答案 0 :(得分:2)

我似乎无法使其与DataFrame.plot.scatter一起使用;它似乎不尊重facecolors='none' kwarg,可能是因为某些默认的color参数正在传递给plt.scatter

相反,退回到matplotlib,指定facecolors='none',然后将edgecolors设置为df中代表颜色的列。

样本数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame({'x': np.random.normal(1,1,1000),
                   'y': np.random.normal(1,1,1000),
                   'color': list('rgby')*250})

plt.scatter(df.x.values, df.y.values, facecolors='none', edgecolors=df['color'], alpha=0.2, s=100)
plt.show()

enter image description here

答案 1 :(得分:0)

来自matplotlib scatter doc

  

edgecolors:颜色或颜色序列,可选,默认值:'face'。标记的边缘颜色。可能的值:

     
      
  • 'face':边缘颜色将始终与脸部颜色相同。

  •   
  • 'none':不会绘制补丁边界。

  •   
  • 一种Matplotib颜色。

  •   
     

对于未填充的标记,将忽略edgecolors kwarg并强制其在内部“面对”

尝试添加:edgecolors='none'

 ax = ddf.plot.scatter(
        x='espvida', 
        y='e_anosestudo', 
        c=ddf['cor'],
        alpha=.2,
        marker='o',
        edgecolors='none);