matplotlib 不指定边缘颜色的散点图
matplotlib scatter edge without specifying edgecolor
看来现在默认的散点图标记是一个没有边的实心圆。我想要一个带有边缘和 facecolor="none" 的标记。
但是,如果 facecolor="none" 但未指定 edgecolor,则绘图为空。
我希望标记有多种不同的颜色,但不关心哪一种颜色。
我怎样才能 "turn on" 边缘?
有两种方法可以生成空的或空心的散点标记:
正在将面部颜色设置为“none”
您可以“关闭”面部,而不是“只打开”边缘。因此,为了使散点标记的面色透明,您可以将结果 PolyCollecton
的面色设置为 "none"
。
sc = ax.scatter(...)
sc.set_facecolor("none")
这与 sc = ax.scatter(x,y, c=x, facecolor="none")
不同,因为 c
参数覆盖了 facecolor
。
完整示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,20)
y = np.sin(x)
fig, ax=plt.subplots()
sc = ax.scatter(x,y, c=x, cmap="nipy_spectral")
sc.set_facecolor("none")
plt.show()
使用非填充标记
另一种选择是使用非填充标记。这将只在边缘有它的面色。例如 STIX font (also see )
中的 marker="$\u25EF$"
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,20)
y = np.sin(x)
fig, ax=plt.subplots()
sc = ax.scatter(x,y, c=x, marker="$\u25EF$", cmap="nipy_spectral")
plt.show()
注意:在python 2中,您需要使用marker=ur"$\u25EF$"
代替。
看来现在默认的散点图标记是一个没有边的实心圆。我想要一个带有边缘和 facecolor="none" 的标记。 但是,如果 facecolor="none" 但未指定 edgecolor,则绘图为空。 我希望标记有多种不同的颜色,但不关心哪一种颜色。
我怎样才能 "turn on" 边缘?
有两种方法可以生成空的或空心的散点标记:
正在将面部颜色设置为“none”
您可以“关闭”面部,而不是“只打开”边缘。因此,为了使散点标记的面色透明,您可以将结果 PolyCollecton
的面色设置为 "none"
。
sc = ax.scatter(...)
sc.set_facecolor("none")
这与 sc = ax.scatter(x,y, c=x, facecolor="none")
不同,因为 c
参数覆盖了 facecolor
。
完整示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,20)
y = np.sin(x)
fig, ax=plt.subplots()
sc = ax.scatter(x,y, c=x, cmap="nipy_spectral")
sc.set_facecolor("none")
plt.show()
使用非填充标记
另一种选择是使用非填充标记。这将只在边缘有它的面色。例如 STIX font (also see
marker="$\u25EF$"
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,20)
y = np.sin(x)
fig, ax=plt.subplots()
sc = ax.scatter(x,y, c=x, marker="$\u25EF$", cmap="nipy_spectral")
plt.show()
注意:在python 2中,您需要使用marker=ur"$\u25EF$"
代替。