matplotlib 图例中的标签重复
Duplication of label in matplotlib legend
我使用 for 循环在图表中绘制了两条线。
plt.figure(num=2, dpi=120)
plt.title(r"Fonction $\mu$(x) et sa spline cubique pour différents degrés")
plt.plot(xe_array, fu(xe_array), color="green", label=r"$\mu$(x)")
nlist=[50,200]
color_list=["red", "blue"]
for j in range(len(nlist)):
x_=np.linspace(start=0, stop=1, num=nlist[j]+1)
y_=np.array(fu(x_))
ye_=csi.spline_cub(x_,y_, xe_array)[0]
plt.plot(x_,y_,ye_, color=color_list[j], label=f"n={nlist[j]}")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.ylim(-2,2)
plt.legend(loc=(1.04,0.5))
plt.show()
xe_array 已经定义并且是一个 linspace 数组。
这是输出:
这是一个错误吗?
您在 plt.plot
函数的同一次调用中绘制了两条线。它正在绘制 x_, y_
和 ye_
.
我无法 运行 你的代码,因为它不完整,但这里有类似的东西:
import matplotlib.pyplot as plt
import numpy as np
plt.figure(num=2, dpi=120)
plt.title(r"Fonction $\mu$(x) et sa spline cubique pour différents degrés")
x_=np.linspace(start=0, stop=1, num=50+1)
y_=np.array(np.sin(x_))
plt.plot(x_,y_,y_, color='r', label=f"n=50")
plt.legend(loc=(1.04,0.5))
plt.show()
它产生了两个相同的图例。
下面产生一个。
plt.plot(x_,y_, color='r', label=f"n=50")
额外的一点:我不认为这部分在官方文档中是well-documented。但我的理解是,这是“故意”非常类似于plot function in matlab。所以下面的图 n 行具有相同的标签:
plot(x1, y1, x2, y2, ... xn, yn, label='something')
在您的情况下,您只提供了奇数个位置参数,因此我认为它将您的最后一个参数 (ye_
) 解释为 y-only 行。很难说这是错误还是功能。
我使用 for 循环在图表中绘制了两条线。
plt.figure(num=2, dpi=120)
plt.title(r"Fonction $\mu$(x) et sa spline cubique pour différents degrés")
plt.plot(xe_array, fu(xe_array), color="green", label=r"$\mu$(x)")
nlist=[50,200]
color_list=["red", "blue"]
for j in range(len(nlist)):
x_=np.linspace(start=0, stop=1, num=nlist[j]+1)
y_=np.array(fu(x_))
ye_=csi.spline_cub(x_,y_, xe_array)[0]
plt.plot(x_,y_,ye_, color=color_list[j], label=f"n={nlist[j]}")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.ylim(-2,2)
plt.legend(loc=(1.04,0.5))
plt.show()
xe_array 已经定义并且是一个 linspace 数组。
这是输出:
这是一个错误吗?
您在 plt.plot
函数的同一次调用中绘制了两条线。它正在绘制 x_, y_
和 ye_
.
我无法 运行 你的代码,因为它不完整,但这里有类似的东西:
import matplotlib.pyplot as plt
import numpy as np
plt.figure(num=2, dpi=120)
plt.title(r"Fonction $\mu$(x) et sa spline cubique pour différents degrés")
x_=np.linspace(start=0, stop=1, num=50+1)
y_=np.array(np.sin(x_))
plt.plot(x_,y_,y_, color='r', label=f"n=50")
plt.legend(loc=(1.04,0.5))
plt.show()
它产生了两个相同的图例。
下面产生一个。
plt.plot(x_,y_, color='r', label=f"n=50")
额外的一点:我不认为这部分在官方文档中是well-documented。但我的理解是,这是“故意”非常类似于plot function in matlab。所以下面的图 n 行具有相同的标签:
plot(x1, y1, x2, y2, ... xn, yn, label='something')
在您的情况下,您只提供了奇数个位置参数,因此我认为它将您的最后一个参数 (ye_
) 解释为 y-only 行。很难说这是错误还是功能。