python - 用python绘制不同颜色的圆圈

标签 python matplotlib colors

对于生成的一组点,

  1. 如何绘制每个点具有不同颜色的圆?
  2. 即使圆已填充,如何显示圆的中心点?

目的:我有一组 GPS 点,我想绘制穿过这些点的线,并为每个点绘制一个以该点为中心的一定半径的圆。颜色区分是为了区分绘制的各个点和圆。

目前,我只能用 1 种特定颜色绘制点并在每个点处绘制圆圈。 (我阅读了有关使用颜色图和 RGB 的其他帖子,但不幸的是,我无法实现它)

下图显示了每个绘图点的不同颜色(可以使用任何颜色)的圆圈的预期绘图,圆圈上的点代表每个圆圈的中心(基本上在每个绘图点)。

Circles different colours

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 表),以便我们为圆圈提供不同的颜色? Circles with Different Colours

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

新输出(使用散点图方法):

Circle cropped at corner

最佳答案

您可以使用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')

enter image description here

关于python - 用python绘制不同颜色的圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401566/

相关文章:

python - 如何在特定范围内增加列表中的值

java - 如何生成随机的亮色?

python - 根据 Python 中的另一个数据框选择数据框的行

python - 如何使用 pip 在 Windows 7 上使用 MinGW-w64 编译器安装包?

python - 在 python 中通过本地服务器进行通信

html - 更改 HTML5 Canvas 文本跨度颜色

Android Material 默认颜色

python - 如何用 distplot 绘制两个图例

python - 使用分类值时如何保留散点图中轴的顺序?

python - Matplotlib - 属性错误 : 'version_info' object has no attribute '__version__"