我想同时向plt.plot
对象添加标签。 matplotlib
真的让我感到困惑,因为似乎有一百万种方法来绘制一个人物。有些人fig, ax = plt.subplots
而其他人只做plt.plot
。如果我搜索,我可以找到更多。
无论如何,我怎样才能在数据上添加所有标签,在一行中没有循环?我一直在尝试使用seaborn
,但我不知道如何使用简单的线图,这就是我使用matplotlib
的原因。
matplotlib
或seaborn
中是否存在某种类型的方法,您可以在其中为其绘制数据点数组(在本例中为80个点的3个样本)以及标签得到这种情节?
在下方提供我的代码,以便您看到我正在构建情节的DataFrame,但问题的最重要部分是在#____________________________
不是How do I assign multiple labels at once in matplotlib?的副本,因为问题是直接询问如何在没有for循环的情况下将其设置在一行中。 "重复"建议类似于下面我的答案的解决方案。
"""Softmax."""
scores = [3.0, 1.0, 0.2]
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
def softmax(x):
"""Compute softmax values for each sets of scores in x."""
return(np.exp(x) / np.sum(np.exp(x),axis=0))
# Plot softmax curvesy
x = np.arange(-2.0, 6.0, 0.1)
scores = np.vstack([x, np.ones_like(x), 0.2 * np.ones_like(x)])
DF_activation = pd.DataFrame(softmax(scores).T,index=x,columns=["x","1.0","0.2"])
#____________________________
#I have to add them like this
[plt.plot(DF_activation.index,DF_activation[c], linewidth=3,label=c) for c in DF_activation.columns]
#But I want to add them like this
#plt.plot(DF_activation.index,DF_activation,label=DF_activation.columns,linewidth=2)
plt.xlabel("x")
plt.ylabel("softmax")
plt.legend()
plt.show()
答案 0 :(得分:2)
我假设你的意思是传奇的标签。您可以在一条指令中直接说明labels及其引用的对象:
legend((plot1, plot2, plot3), ('label1', 'label2', 'label3'))
但这意味着您需要将您的情节放入变量中。
plot, = ...
只需使用变量来引用图例功能中的标签列表。