我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

继续描述基于pythonplot画图代码,当然matplotlib.pyplot里面的功能函数参数太多太复杂了。苏南大叔这边就是碰到哪个就讲解一下哪个,用不到的就当不存在好了。本文主要描述给鸢尾花散点图添加个自动的图例信息,使用的函数是.legend()

苏南大叔:以鸢尾花散点图为例,plot如何自动添加图例legend信息? - 鸢尾花散点图添加图例
以鸢尾花散点图为例,plot如何自动添加图例legend信息?(图2-1)

苏南大叔的“平行空间笔记本”博客,记录苏南大叔的编程经验文章。本文测试环境:win10python@3.11.0pandas@1.5.3numpy@1.24.2matplotlib@3.7.1

legend:传奇。但是在这边就是图例的意思。

测试代码

如何基于鸢尾花数据集画散点图,可以参考文章:

下面直接上代码,具体的代码解释,可以参考上面的文章。测试代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data_url = "http://download.tensorflow.org/data/iris_training.csv"
column_names = ["萼长", "萼宽", "瓣长", "瓣宽", "种类"]
df_iris = pd.read_csv(data_url, header=0, names=column_names)
data_x = np.array(df_iris["萼长"])
data_y = np.array(df_iris["萼宽"])
data_z = np.array(df_iris["种类"])
fig = plt.figure("鸢尾花散点图示例", figsize=(15, 15))
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
plt.suptitle("鸢尾花数据集\n蓝色->setosa|红色->versicolor|绿色->virginica")
plt.xlabel(column_names[0])
plt.ylabel(column_names[1])
plt.title(column_names[0] + "、" + column_names[1] + "数据关联散点图")

# 看这里 ###########################################################
p1 = plt.scatter(data_x, data_y, c=data_z, cmap="brg")
plt.legend(handles=p1.legend_elements()[0], labels=["山鸢尾", "变色鸢尾", "维吉尼亚鸢尾"], loc='best', shadow=True, fontsize=16)
# 看这里 ###########################################################

plt.savefig("scatter.png")
plt.show()

苏南大叔:以鸢尾花散点图为例,plot如何自动添加图例legend信息? - 图例效果图
以鸢尾花散点图为例,plot如何自动添加图例legend信息?(图2-2)

散点图图例关键代码

在本文中,鸢尾花一共有三种花,分别是:

中文名英文名数据分类图中的颜色
山鸢尾setosa分类0蓝色
变色鸢尾versicolor分类1红色
维吉尼亚鸢尾virginica分类2绿色

在上边的散点图中,使用了带颜色的圆点进行了区分。那么,每种颜色都具体代表什么花呢?这就是鸢尾花散点图中图例的作用。修改代码如下:

q1 = plt.scatter(data_x, data_y, c=data_z, cmap="brg")
plt.legend(handles=q1.legend_elements()[0], labels=["山鸢尾", "变色鸢尾", "维吉尼亚鸢尾"], loc='best', shadow=True, fontsize=16)

主要的参数就是handleslabels,看看这个q1.legend_elements()是个什么东东。

([<matplotlib.lines.Line2D object at 0x0000016BD453B0B8>, <matplotlib.lines.Line2D object at 0x0000016BD453B208>, <matplotlib.lines.Line2D object at 0x0000016BD453B2B0>], ['$\\mathdefault{0}$', '$\\mathdefault{1}$', '$\\mathdefault{2}$'])

所以,可以看到:本文的鸢尾花数据集散点图中,图例关联的对象就是:

matplotlib.lines.Line2D object

其余的参数就留给默认的就好了,不解释。

结束语

matplotlib.pyplot画图,在做论文的图的时候,可能是很有用的技能。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python