用插值颜色填充阿基米德椎骨之间的区域-Matplotlib

问题描述

我想绘制各种螺旋,如图所示(一个螺旋在另一个螺旋内)。假设我有三个螺旋(S1,S2和S3),并且我想填充连续螺旋之间的区域,即S1和S2,S2和S3之间的区域,最后是S3和S1之间的区域。

Three spirals

我尝试了几种方法来解决以下两个问题,但没有成功:

1-一对螺旋之间的区域应涂上内插颜色。例如,第一个螺旋(S1)是黑色,第二个螺旋(S2)是灰色,那么S1和S2之间的区域必须是从黑色到灰色的渐变。

2- S3和S1之间的区域未按我的要求填充。在这里,填充的区域在S1和S3之间,而不是在S3和S1之间。

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

def create_archimides_spiral(a=0,b=1,num_spirals=10):

    """
    Functions that creates an archimides spiral
    """

    th = np.linspace(0,num_spirals*np.pi,num_spirals*100) # The higher the number of splits,the greater the quality of each segment

    r = a + b*th

    x = r * np.cos(th)
    y = r * np.sin(th)

    return x,y

# create the spirals
x,y = create_archimides_spiral(a=0,b=1)
x1,y1 = create_archimides_spiral(a=2,b=1)
x2,y2 = create_archimides_spiral(a=4,b=1)

fig,ax = plt.subplots(1)
ax.plot(x,y,color='black',linewidth=3)
ax.plot(x1,y1,color='gray',linewidth=3)
ax.plot(x2,y2,color='silver',linewidth=3)

plt.fill(
    np.append(x,x1[::-1]),np.append(y,y1[::-1]),color= "lightgray"
)

plt.fill(
   np.append(x1,x2[::-1]),np.append(y1,y2[::-1]),color= "lightgray"
)

plt.fill_between(x,interpolate=True)
plt.fill_between(x1,interpolate=True)

ax.set_aspect(1)
plt.show()

这是我获得的数字,但这不是我想要的。

Filled areas

在此方面,我将不胜感激。

最佳成绩

奥斯卡

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)