python - 用精确值标记图中的曲线-LMLPHP在以下代码中,我们在一幅图中绘制了10条曲线if Ju<11:
如何在每条曲线上书写,读者可以在其中找到Ju的每一行。
例如,在每一行上,我们可以看到Ju =1,另一行是Ju=2并...

我的意思是将每行标签上的确切使用价值

fig, (ax1) = plt.subplots(1)
for n in np.arange(100,200,100):
    for z in np.arange(3,4):
        ET_list=[]
        uf_list=[]
        for xx in range(1,819):
            for uf in np.linspace(1e-26,1e-20,10):
                Ju = dfimppara.iloc[xx, 1]
                Jl = dfimppara.iloc[xx, 2]
                lim = Ju - Jl
                if lim > 1:
                    pass
                else:
                    if Ju<11:
                        ET_list.append(ET(xx, z, n, 1, uf)/ET(xx, z, n, 1, 0))
                        uf_list.append(uf)
                        ax1.plot(uf_list, ET_list)
                    else:
                        pass

ax1.title.set_text('Fig1')
plt.xlabel('Un')
plt.ylabel('TT')
#plt.xscale('log')
plt.show()


任何帮助请

最佳答案

您可以使用text(x,y,s)中的matplotlib功能。这里是文档:
https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.text.html

text包含3个主要参数,即xy,它们是文本的坐标。而s是要在绘图上写入的字符串。对于您来说,它将类似于"Ju={:d}".format(Ju)

你应该有这样的东西

fig, (ax1) = plt.subplots(1)
for n in np.arange(100,200,100):
    for z in np.arange(3,4):
        ET_list=[]
        uf_list=[]
        for xx in range(1,819):
            for uf in np.linspace(1e-26,1e-20,10):
                Ju = dfimppara.iloc[xx, 1]
                Jl = dfimppara.iloc[xx, 2]
                lim = Ju - Jl
                if lim > 1:
                    pass
                else:
                    if Ju<11:
                        ET_list.append(ET(xx, z, n, 1, uf)/ET(xx, z, n, 1, 0))
                        uf_list.append(uf)
                        ax1.plot(uf_list, ET_list)
                        x = # Put here a float or int that represent the x coordinates of the text
                        y = # Put here a float or int that represent the y coordinates of the text
                        s = "Ju={:d}".format(Ju)
                        ax1.text(x, y, s)
                    else:
                        pass
ax1.title.set_text('Fig1')
plt.xlabel('Un')
plt.ylabel('TT')
plt.show()


您可以尝试的其他方法只是将其作为图例。您可以通过使用label中的ax.plot()参数为每行设置标签来设置图例。
像这样:

fig, (ax1) = plt.subplots(1)
for n in np.arange(100,200,100):
    for z in np.arange(3,4):
        ET_list=[]
        uf_list=[]
        for xx in range(1,819):
            for uf in np.linspace(1e-26,1e-20,10):
                Ju = dfimppara.iloc[xx, 1]
                Jl = dfimppara.iloc[xx, 2]
                lim = Ju - Jl
                if lim > 1:
                    pass
                else:
                    if Ju<11:
                        ET_list.append(ET(xx, z, n, 1, uf)/ET(xx, z, n, 1, 0))
                        uf_list.append(uf)
                        ax1.plot(uf_list, ET_list, label="Ju={:d}".format(Ju))
                    else:
                        pass
ax1.title.set_text('Fig1')
# You have to set the legend
ax1.legend(loc="best")
plt.xlabel('Un')
plt.ylabel('TT')
plt.show()

10-08 00:39