我有一个如下所示的散点图,我希望我的散点图有双边缘,而不必在这个散点图的顶部创建具有相同坐标的相同散点图。我找不到如何将双线作为边缘。
import numpy as np
import matplotlib.pyplot as plt
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
plt.scatter(x, y, s=400, c=colors,marker='h' alpha=0.5,edgecolors='black',linewidth=1)
plt.show()
这个问题的主要原因来 self 的一个错误:当我用相同的坐标叠加散点图时,我创建的新图往往会略微修改它们的位置并且不能完美地相互吻合
当背景标记有 facecolors=''
时,这个错误不会显示,但只有当它有 facecolors='w'
时才会显示,这对我来说是个问题。
这似乎确实是一个错误。
一个可能的解决方案是使用 colors
参数来绘制白色散点。
import numpy as np
import matplotlib.pyplot as plt
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
whites = [[1,1,1]]*N
plt.scatter(x, y, s=400, c=whites, marker='h', alpha=0.5,edgecolors='black',linewidth=1)
plt.scatter(x, y, s=260, c=colors, marker='h', alpha=0.5,edgecolors='black',linewidth=1)
plt.show()
根据应用,使用特殊符号作为标记也可能是一种选择。参见
this question或
complete list .
import matplotlib.pyplot as plt
N = 4
x = [1,1,2,2]
y = [1,2,1,2]
symbols = [ur"$\u27C1$", ur"$\u25C8$", ur"$\u229A$", ur"$\u29C8$"]
for i in range(N):
plt.scatter(x[i], y[i], s=400, c=(i/float(N), 0, 1-i/float(N)), marker=symbols[i], alpha=0.5,linewidth=1)
plt.show()
我是一名优秀的程序员,十分优秀!