您可以使用带有基于色图和散点图归一化颜色的空图来创建图例手柄.
import pandas as pd
pandas python?import numpy as np; np.random.seed(1)
import matplotlib.pyplot as plt
x = [np.random.normal(5,2, size=20), np.random.normal(10,1, size=20),
python reshape。np.random.normal(5,1, size=20), np.random.normal(10,1, size=20)]
y = [np.random.normal(5,1, size=20), np.random.normal(5,1, size=20),
np.random.normal(10,2, size=20), np.random.normal(10,2, size=20)]
python numpy库。c = [np.ones(20)*(i+1) for i in range(4)]
df = pd.DataFrame({"x":np.array(x).flatten(),
"y":np.array(y).flatten(),
python图形界面?"colors":np.array(c).flatten()})
size=81
sc = plt.scatter(df['x'], df['y'], s=size, c=df['colors'], edgecolors='none')
pythonmatplotlib?lp = lambda i: plt.plot([],color=sc.cmap(sc.norm(i)), ms=np.sqrt(size), mec="none",
label="Feature {:g}".format(i), ls="", marker="o")[0]
handles = [lp(i) for i in np.unique(df["colors"])]
plt.legend(handles=handles)
plt.show()
另外,您也可以按颜色列中的值过滤数据框,例如使用groubpy,并为每个功能绘制一个散点图:
import pandas as pd
import numpy as np; np.random.seed(1)
import matplotlib.pyplot as plt
x = [np.random.normal(5,2, size=20), np.random.normal(10,1, size=20),
np.random.normal(5,1, size=20), np.random.normal(10,1, size=20)]
y = [np.random.normal(5,1, size=20), np.random.normal(5,1, size=20),
np.random.normal(10,2, size=20), np.random.normal(10,2, size=20)]
c = [np.ones(20)*(i+1) for i in range(4)]
df = pd.DataFrame({"x":np.array(x).flatten(),
"y":np.array(y).flatten(),
"colors":np.array(c).flatten()})
size=81
cmap = plt.cm.viridis
norm = plt.Normalize(df['colors'].values.min(), df['colors'].values.max())
for i, dff in df.groupby("colors"):
plt.scatter(dff['x'], dff['y'], s=size, c=cmap(norm(dff['colors'])),
edgecolors='none', label="Feature {:g}".format(i))
plt.legend()
plt.show()
两种方法产生相同的图:
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态