python绘图中的自动图例和轴的限制

python绘图中的自动图例和轴的限制,python,matplotlib,plot,Python,Matplotlib,Plot,我正在使用以下代码绘制结果 有没有办法自动添加图例?我的意思是,如果z=1,9绘图自动写入每条线的图例,该颜色用于z=1,而该颜色用于z=2 还有一个是如何增加每个轴的截面?不是他们的极限,只是他们的部分。这里我只看到0,0.5,1,但我想要0,0.1,0.2,0.3, fig, (ax1, ax2, ax3) = plt.subplots(3) while True: inp = float(input("PLEASE ENTER VALUE:")) if i

我正在使用以下代码绘制结果

有没有办法自动添加图例?我的意思是,如果
z=1,9
绘图自动写入每条线的图例,该颜色用于
z=1
,而该颜色用于
z=2

还有一个是如何增加每个轴的截面?不是他们的极限,只是他们的部分。这里我只看到
0,0.5,1
,但我想要
0,0.1,0.2,0.3,

fig, (ax1, ax2, ax3) = plt.subplots(3)
while True:
        inp  = float(input("PLEASE ENTER VALUE:"))
        if inp==0:
            print('***')
            print('0 Is not acceptable')
            print('***')
        else:
            for mg in np.arange(100,3000,500):
                for z in np.arange(0,1):
                    for test in range(0,1):
                        Ju_list=[]
                        ET_list=[]
                        ETmgncmb_list=[]
                        ETmgcmb_list=[]
                        nu_list=[]

                        for xx in range(1,819):
                            Ju = dfimppara.iloc[xx, 1]
                            Jl = dfimppara.iloc[xx, 2]
                            lim = Ju - Jl
                            if inp<0:
                                if lim > 1:
                                    pass
                                else:
                                    Ju_list.append(dfimppara.iloc[xx, 1])
                                    ET_list.append(ET(xx, 0,0,100))
                                    ETmgncmb_list.append(ET(xx, 0,0,mg))
                                    ETmgcmb_list.append(ET(xx, 0,1,mg))

                                    ax1.plot(Ju_list, ET_list)
                                    ax2.plot(Ju_list, ETmgncmb_list)
                                    ax3.plot(Ju_list, ETmgcmb_list)



                            else: 
                                ... some lines of code

            break

ax1.title.set_text('T_ex vs. J'  )
ax2.title.set_text('T_ex vs. J'  )
ax3.title.set_text('T_ex vs. J ')
plt.show()
图(ax1、ax2、ax3)=plt.子批次(3)
尽管如此:
inp=浮点(输入(“请输入值:”)
如果inp==0:
打印(“***”)
打印(“0不可接受”)
打印(“***”)
其他:
对于np.arange(1003000500)中的mg:
对于np.arange(0,1)中的z:
对于范围(0,1)内的试验:
Ju列表=[]
ET_列表=[]
ETmgncmb_列表=[]
ETmgcmb_列表=[]
nu_列表=[]
对于范围内的xx(1819):
Ju=DFIMP第iloc段[xx,1]
Jl=DFIMP第iloc段[xx,2]
lim=Ju-Jl
如果inp 1:
通过
其他:
Ju_list.append(dfimppara.iloc[xx,1])
ET_列表追加(ET(xx,0,0100))
ETmgncmb_list.append(ET(xx,0,0,mg))
ETmgcmb_列表。追加(ET(xx,0,1,mg))
ax1.绘图(Ju列表、ET列表)
ax2.绘图(Ju列表、ETmgncmb列表)
ax3.绘图(Ju列表、ETmgcmb列表)
其他:
... 一些代码行
打破
ax1.title.set_text('T_ex vs.J')
ax2.title.set_text('T_ex vs.J')
ax3.title.set_text('T_ex vs.J')
plt.show()

好的,您可以自己设置记号的位置,只需使用:

plt.sca(轴[0,0])#这里指定要更改xtick的子批
plt.xticks(np.arange(0,1.1,0.1))
您可以找到关于该主题的更多信息

如果要创建图例,只需在绘图中添加标签,然后使用图例的位置调用图例:

ax1.plot(Ju_list,ET_list,label='ET_list')
ax2.绘图(Ju_列表、ETmgncmb_列表、label='ETmgncmb_列表〕)
ax3.绘图(Ju列表、ETmgcmb列表、标签='ETmgcmb列表')
ax1.图例(loc='best')
ax2.图例(loc='best')
ax3.图例(loc='best')

我以前试过,在这里我看到太多问题,我无法找到解决方案。第一个是,在这个图例中,我们应该正好有这两个
z=0和
z=1
。但是在这里,我在图中有10000个“ET_list”,因为我们在3个
for循环中。除了“ET_list”太多这一问题之外,每个lineWell的名称都应该更改。您要绘制多少条曲线?当然,如果使用同一标签绘制10000条曲线,则会出现10000次。我的意思是你可以通过常规的字符串操作来改变每个循环中的标签。另外,您希望如何使用单个标签标记10000条曲线,同时它们应该只有2个标签?没有1000条曲线。有许多循环,但每个循环只影响一个功能。正如你看到的,我有3个for循环,但举个例子,
mg
是可变的。问题是你多次调用你的绘图,所以你绘制了很多曲线。这就是为什么图中不止一个
ET_列表
的确切原因。如果你不相信我,你可以在绘图调用前放置一个
print
,你会看到,对于绘图中的每个
ET_列表
,你也会得到一个打印。