对于生成的一组点,
- 如何绘制每个点具有不同颜色的圆?
- 即使圆已填充,如何显示圆的中心点?
目的:我有一组 GPS 点,我想绘制穿过这些点的线,并为每个点绘制一个以该点为中心的一定半径的圆。颜色区分是为了区分绘制的各个点和圆。
目前,我只能用 1 种特定颜色绘制点并在每个点处绘制圆圈。 (我阅读了有关使用颜色图和 RGB 的其他帖子,但不幸的是,我无法实现它)
下图显示了每个绘图点的不同颜色(可以使用任何颜色)的圆圈的预期绘图,圆圈上的点代表每个圆圈的中心(基本上在每个绘图点)。
import matplotlib.pyplot as plt
import numpy as np
xx = np.linspace(0,10,5)
yy = np.linspace(30,60,5)
zz = np.vstack((xx,yy)).T
fig = plt.figure(1, figsize=(12, 5))
ax = fig.add_subplot(111, aspect='equal')
plt.plot(xx,yy,zorder=2)
plt.scatter(xx,yy,zorder=1)
for i in range(0,len(xx)):
circle1 = plt.Circle(zz[i], 4, color='g', fill=True)
plt.gca().add_patch(circle1)
plt.autoscale()
plt.show()
更新
正如@busybear建议的那样,我们可以使用补丁集合来绘制不同颜色的圆圈。该实现非常适合定义的点集。然而,这仅针对 5 个测试数据点进行。对于更多数据点,我们重复定义的颜色,或者不绘制圆圈。
是否有一种方法可以定义合适的色谱/颜色表(可能使用十六进制值或具有不同强度的 RGB 表),以便我们为圆圈提供不同的颜色?
xx = np.linspace(0,10,10)
yy = np.linspace(30,60,10)
zz = np.vstack((xx,yy)).T
fig = plt.figure(1, figsize=(12, 5))
ax = fig.add_subplot(111, aspect='equal')
plt.plot(xx,yy,zorder=2)
plt.scatter(xx,yy,zorder=1)
circles = []
for i, c in zip(range(0,len(xx)), 'rgbmkrgbmk'):
circles.append(plt.Circle(zz[i], 3, color=c, fill=True))
coll = PatchCollection(circles, match_original=True, zorder=0)
ax.add_collection(coll)
plt.autoscale()
plt.show()
新输出(使用散点图方法):
最佳答案
您可以使用color='g'
将每个圆圈的颜色设置为绿色,因此您只需更改此设置即可更改它们的颜色。您可以使用 zorder
设置对象的顺序,就像对散点图部分所做的那样。对于圆圈,您可以使用 PatchCollection,如 answer 所示。 。看起来可能是这样的:
from matplotlib.collections import PatchCollection
...
circles = []
cmap = plt.cm.get_cmap('jet')
max_i = len(xx) - 1
for i in range(len(xx)):
circles.append(plt.Circle(zz[i], 3, color=cmap(i/max_i), fill=True))
coll = PatchCollection(circles, match_original=True, zorder=0)
ax.add_collection(coll)
<小时/>
但是,您也可以仅使用每个点的边缘的散点图来完成这一切:
plt.plot(xx, yy,'o-')
plt.scatter(xx, yy, s=[5000, 2000, 6000, 9000, 1000], c=range(len(xx)), cmap='jet')
关于python - 用python绘制不同颜色的圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401566/