修复标签图例python

修复标签图例python,python,matplotlib,legend,Python,Matplotlib,Legend,我试图为具有相同编号的“域”设置相同的标签。我怎么做?我希望每个域名都有相同的颜色。。。 把你的问题分成两部分回答你的问题,但看起来不是很干净 import matplotlib.pyplot as plt d = {'selected_peaks': [487, 537, 181, 139], 'timeStep': [24250000.0, 26750000.0, 9000000.0, 6900000.0], 'F': [868.7655, 713.4191, 58

我试图为具有相同编号的“域”设置相同的标签。我怎么做?我希望每个域名都有相同的颜色。。。


把你的问题分成两部分回答你的问题,但看起来不是很干净

import matplotlib.pyplot as plt


d = {'selected_peaks': [487, 537, 181, 139],
     'timeStep': [24250000.0, 26750000.0, 9000000.0, 6900000.0],
     'F': [868.7655, 713.4191, 584.4315, 698.3004], 'domain': [2, 2, 3, 3]}


if 2 in d['domain']:
    for i in range(len(d['selected_peaks'][:2])):
        plt.plot(d['timeStep'][i], d['F'][i], 'o', c='black',
                 label='domain '+str(d['domain'][i]))
        plt.legend()
if 3 in d['domain']:
    for i in range(len(d['selected_peaks'][2:4])):
        plt.plot(d['timeStep'][i+2], d['F'][i+2], 'o', c='red',
                 label='domain '+str(d['domain'][i+2]))
        plt.legend()

将你的问题分成两部分回答你的问题,但看起来不是很清楚

import matplotlib.pyplot as plt


d = {'selected_peaks': [487, 537, 181, 139],
     'timeStep': [24250000.0, 26750000.0, 9000000.0, 6900000.0],
     'F': [868.7655, 713.4191, 584.4315, 698.3004], 'domain': [2, 2, 3, 3]}


if 2 in d['domain']:
    for i in range(len(d['selected_peaks'][:2])):
        plt.plot(d['timeStep'][i], d['F'][i], 'o', c='black',
                 label='domain '+str(d['domain'][i]))
        plt.legend()
if 3 in d['domain']:
    for i in range(len(d['selected_peaks'][2:4])):
        plt.plot(d['timeStep'][i+2], d['F'][i+2], 'o', c='red',
                 label='domain '+str(d['domain'][i+2]))
        plt.legend()

根据域的值,使用颜色变量指定颜色,然后将该变量发送到plt.plot()命令:

最后的代码是:

import matplotlib.pyplot as plt

d = {
    "selected_peaks": [487, 537, 181, 139],
    "timeStep": [24250000.0, 26750000.0, 9000000.0, 6900000.0],
    "F": [868.7655, 713.4191, 584.4315, 698.3004],
    "domain": [2, 2, 3, 3],
}
for i in range(len(d["selected_peaks"])):
    if d["domain"][i] == 2:
        color = "b"
    elif d["domain"][i] == 3:
        color = "r"
    plt.plot(
        d["timeStep"][i],
        d["F"][i],
        "o",
        color=color,
        label="domain " + str(d["domain"][i]),
    )

    plt.legend()

根据域的值,使用颜色变量指定颜色,然后将该变量发送到plt.plot()命令:

最后的代码是:

import matplotlib.pyplot as plt

d = {
    "selected_peaks": [487, 537, 181, 139],
    "timeStep": [24250000.0, 26750000.0, 9000000.0, 6900000.0],
    "F": [868.7655, 713.4191, 584.4315, 698.3004],
    "domain": [2, 2, 3, 3],
}
for i in range(len(d["selected_peaks"])):
    if d["domain"][i] == 2:
        color = "b"
    elif d["domain"][i] == 3:
        color = "r"
    plt.plot(
        d["timeStep"][i],
        d["F"][i],
        "o",
        color=color,
        label="domain " + str(d["domain"][i]),
    )

    plt.legend()

只需创建一个颜色字典,并使用
color
参数引用它们

import matplotlib.pyplot as plt
d = {'selected_peaks': [487, 537, 181, 139], 'timeStep': [24250000.0, 26750000.0, 9000000.0, 6900000.0]
   , 'F': [868.7655, 713.4191, 584.4315, 698.3004], 'domain': [2, 2, 3, 3], }

colors = {2:'red', 3:'green'}

for i in range(len(d['selected_peaks'])):
    plt.plot(d['timeStep'][i], d['F'][i], 'o', label='domain '+str(d['domain'][i]), color=colors[d['domain'][i]])
    plt.legend()

只需创建一个颜色字典,并使用
color
参数引用它们

import matplotlib.pyplot as plt
d = {'selected_peaks': [487, 537, 181, 139], 'timeStep': [24250000.0, 26750000.0, 9000000.0, 6900000.0]
   , 'F': [868.7655, 713.4191, 584.4315, 698.3004], 'domain': [2, 2, 3, 3], }

colors = {2:'red', 3:'green'}

for i in range(len(d['selected_peaks'])):
    plt.plot(d['timeStep'][i], d['F'][i], 'o', label='domain '+str(d['domain'][i]), color=colors[d['domain'][i]])
    plt.legend()

尽管绘图肯定只能使用matplotlib创建,但目前的问题非常适合将数据表示为数据帧并用于绘图

只要将“域”列的名称作为
hue
参数传递,就会自动为每个域创建一个颜色,并自动添加一个图例,同时删除所有双条目。如果您不喜欢默认颜色,可以选择颜色贴图、创建颜色贴图或将颜色列表作为
调色板
参数。还可以使用列名自动设置X轴和Y轴的相应标签

从matplotlib导入pyplot作为plt
作为pd进口熊猫
导入seaborn作为sns
d={'selected_peaks':[487537181139],'timeStep':[24250000.0267500000.0900000.069000000.0],
‘F’:[868.7655713.4191584.4315698.3004],‘域’:[2,2,3,3]}
df=pd.数据帧(d)
sns.scatterplot('timeStep','F',marker='o',hue='domain',palete='tab10',data=df)
plt.show()

尽管绘图肯定只能使用matplotlib创建,但目前的问题非常适合将数据表示为数据帧并用于绘图

只要将“域”列的名称作为
hue
参数传递,就会自动为每个域创建一个颜色,并自动添加一个图例,同时删除所有双条目。如果您不喜欢默认颜色,可以选择颜色贴图、创建颜色贴图或将颜色列表作为
调色板
参数。还可以使用列名自动设置X轴和Y轴的相应标签

从matplotlib导入pyplot作为plt
作为pd进口熊猫
导入seaborn作为sns
d={'selected_peaks':[487537181139],'timeStep':[24250000.0267500000.0900000.069000000.0],
‘F’:[868.7655713.4191584.4315698.3004],‘域’:[2,2,3,3]}
df=pd.数据帧(d)
sns.scatterplot('timeStep','F',marker='o',hue='domain',palete='tab10',data=df)
plt.show()

我将使用zip对您的数据进行迭代<代码>对于t,fval,zip中的域(d['timeStep'],d['F'],d['domain']):plt.plot(t,fval,'o',label='domain'+str(domain))。在我看来,这有点干净。另外,如果您只希望每个图例条目出现一次,那么如果您以前没有添加相同的标签,那么只需将label参数添加到
plot
。我会使用zip对数据进行迭代<代码>对于t,fval,zip中的域(d['timeStep'],d['F'],d['domain']):plt.plot(t,fval,'o',label='domain'+str(domain))。在我看来,这有点干净。另外,如果你只想让每个图例条目出现一次,如果你以前没有添加过相同的标签,只需将label参数添加到
plot
。又漂亮又干净,喜欢它!又漂亮又干净,爱死它了!