问题
我试图绘制一个类似于下图的图形:
我使用以下代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
contours = [30, 40, 50]
v = np.array([15, 18])
colours = [
(0.0, 0.26666666666666666, 0.10588235294117647, 1.0),
(0.2917647058823529, 0.6886582083813917, 0.3827758554402153, 1.0),
(0.8274509803921569, 0.9325490196078431, 0.8031372549019608, 1.0)
]
def ellipseFunction(x, v):
return np.sqrt((x[0]/v[0])**2 + (x[1]/v[1])**2)
ellipses = [Ellipse((0, 0), width= 2*v[0]*contours[l], height=2*v[1]*contours[l], ec = colours[l], fc= "none") for l in range(len(contours))]
x = np.linspace(-2500, 2500, 100)
y = np.linspace(-2500, 2500, 100)
plt.figure()
plt.pcolormesh(x, y, ellipseFunction(np.meshgrid(x, y), v).T, cmap = 'plasma', zorder = -1, vmax = 150)
plt.gca().set_aspect(1./plt.gca().get_data_ratio())
for l in range(len(contours)):
plt.gca().add_patch(ellipses[l])
输出:
问题
如何在椭圆的边缘添加椭圆标签(30、40和50),就像原始图像中的等高线图一样?
1条答案
按热度按时间ecfdbz9o1#
您可以使用带有参数
levels
的plt.contour来绘制等高线,然后添加带有clabel的标签。完整代码:
输出: