首页 > 解决方案 > Matplotlib python中具有alpha值的重​​叠圆圈的单色

问题描述

我需要在绘图上绘制许多带有 alpha 值的圆圈以形成羽流。最终目标是让圆圈创建的形状都是相同颜色的灰色,并带有 alpha 值。我目前关于如何做到这一点的想法是以某种方式从图中每个像素的所有颜色中获取一个数组,然后将灰色像素绘制到另一个图上,但每个像素具有相同的灰色和相同的 alpha。

在此处输入图像描述 下面是一些示例代码

from matplotlib.patches import Circle
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize = (15,15))

xcenters = [ 1.58417901,  1.69803238,  1.78679339,  1.83505828,  1.73786315,
        1.58937366,  1.29475643,  0.9209559 ,  0.39656536, -0.07853661,
       -0.42113864, -0.59747518, -0.68001681, -0.73531384, -0.71599026,
       -0.64106519, -0.49968662, -0.39701784, -0.31889204, -0.26861792,
       -0.13188176, -0.00883826,  0.07526662,  0.06435486,  0.03620027,
        0.05727992,  0.07400158,  0.05687624, -0.05667888, -0.23886917,
       -0.44445485]

ycenters = [-0.25825128,  0.14257879,  0.36659285,  0.8996714 ,  1.35826524,
        1.66572642,  1.74932421,  1.72059878,  1.63322675,  1.63164236,
        1.61188319,  1.48757334,  1.22724321,  1.01926049,  0.90470293,
        0.79091371,  0.72391734,  0.66142748,  0.62122794,  0.61176815,
        0.66045195,  0.67431585,  0.66578313,  0.6778193 ,  0.73309689,
        0.8494411 ,  0.91194892,  0.92884158,  0.90799291,  0.85182689,
        0.79312115]

radii = [0.        , 0.29536222, 0.24864138, 0.20219563, 0.24537749,
       0.26141149, 0.33402346, 0.36643359, 0.40545393, 0.47081046,
       0.56114516, 0.57718819, 0.67984869, 0.80464275, 0.78930263,
       0.66024867, 0.67170956, 0.69868706, 0.83289181, 0.95742738,
       0.93709504, 0.94433425, 0.93816289, 0.93853772, 0.97778619,
       1.07447555, 1.05884835, 0.9565367 , 0.91365177, 0.9434755 ,
       1.01110066]

ax.scatter(xcenters, ycenters)

for i in range(len(radii)):

    circ = Circle((xcenters[i], ycenters[i]),
                 radii[i], 
                  color = 'grey',linewidth=2, fill='grey', zorder=-1, alpha = 0.2)
    ax.add_patch(circ)

ax.set_xlim([-3,3])
ax.set_ylim([-3,3])

标签: pythonmatplotlibgeometry

解决方案


推荐阅读