我正在尝试将饼图覆盖在径向渐变上作为背景。它确实有效,但我希望图形显示整个径向渐变(没有将图形边界切割成方形)。
我如何实现这一目标?
之类的内容谢谢。
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
delta = 0.02
x = y = np.arange(-1.0, 1.0, delta)
X, Y = np.meshgrid(x, y)
plt.imshow(-X**2+-Y**2, interpolation='bicubic', cmap=plt.cm.Blues,
origin='lower',extent=[-1.2, 1.2, -1.2, 1.2])
plt.pie([1] , explode=None, radius=1.2 \
, labels=['H'] \
, labeldistance=0.9 \
, startangle=270 \
, colors=[g(0.70)])
plt.show()
答案 0 :(得分:0)
很难让它在同一轴上工作。最好创建两个轴,一个用于背景图像,另一个用于饼图。这允许单独调整它们,即背景轴应该在整个图形范围内并且具有可调节的纵横比,而饼形轴应该具有一些边缘和相同的宽高比。
以下是将饼图(ax
)置于imshow图(ax2
)之上的示例。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
fig.subplots_adjust(.1,.1,.9,.9)
ax.set_aspect("equal")
ax.pie([1,2], radius=1.2 , labels=['H',"A"] , labeldistance=0.9,
startangle=270 , colors=[plt.cm.Blues(1.), plt.cm.Blues(0.5)])
ax2 = fig.add_axes([0,0,1,1], zorder=-1)
ax2.axis("off")
w,h = fig.get_size_inches()
x = np.linspace(-1, 1)*w/h
y = np.linspace(-1, 1)
X, Y = np.meshgrid(x, y)
ax2.imshow(-X**2-Y**2, interpolation='bicubic', cmap=plt.cm.Blues,
origin='lower', aspect="auto", vmin=-0.99)
plt.show()