问题--在matplotlib的散点图中如何给不同种类颜色的点加标签?
Posted 胜天半月子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题--在matplotlib的散点图中如何给不同种类颜色的点加标签?相关的知识,希望对你有一定的参考价值。
需求
在进行代码编写的时候,遇到使用散点图的问题,最后呈现出的结果只是不同颜色的点,但是无法一眼看去让人清楚这些点表示的不同含义。因此,
通过给散点图中不同颜色的点加标签来表示这些点的含义
(我实际的应用是用在机器学习中训练集和测试集的数据中).
-
原始效果
-
最终效果
通过该图像中左上角的标签含义可以明白
蓝色
的散点表示的是训练集的数据
,红色
的点表示的是测试集的数据
。
一、scatter图像显示散点含义
-
一元线性回归Python底层实现
-
引入包
import numpy as np
from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
%matplotlib inline
- 构造、计算、测试
# 构造训练的数据集
x_train = [4,8,5,10,12]
y_train = [20,50,30,70,60]
# 画图
# def draw(x_train,y_train):
# plt.scatter(x_train,y_train,color='b')
# 定义函数求出斜率w和截距b
# 方法:使用最小二乘法斜率和截距求导并使得导数值等于0求解出斜率和截距
def fit(x_train,y_train):
size = len(x_train)
numerator = 0 # 初始化分子
denominator = 0 # 初始化分母
for i in range(size):
numerator += (x_train[i]-np.mean(x_train)) * (y_train[i]-np.mean(y_train))
denominator += (x_train[i]-np.mean(x_train)) ** 2
w = numerator / denominator
b = np.mean(y_train) - w * np.mean(x_train) # 用求出的斜率计算截距
return w,b
# 预测函数
def predict(x,w,b):
y = w * x + b
return y
# 根据计算出的w,b进行画图
def fit_line(w,b):
typ1 = plt.scatter(x_train,y_train,color='b') # 画出散点图
# 测试集使用np.linspace()生成的数据集进行测试
x = np.linspace(4,15,9)
y = w * x + b
print('x_test:',x)
print('y_test:',y)
typ2 = plt.scatter(x,y,color='red') # 测试集的散点图
plt.plot(x,y)
plt.legend((typ1,typ2),('train','test')) # ⭐⭐⭐
plt.show()
- 调用显示
w ,b = fit(x_train,y_train) # 根据训练集数据计算出斜率和截距
print('斜率:',w,'截距:',b)
fit_line(w,b) # 绘制出测试集数据
左上角显示的原因在于:
plt.legend((typ1,typ2),('train','test'))
二、附录
- 【matplotlib】scatter()散点图的详细参数
- 数字的可视化:python画图之散点图sactter函数详解 :该篇内容是使用subplot进行图像绘出的,散点的含义是直接显示在图像中的
- 用plt.scatter()画带label的散点图(无需循环,直接根据标签生成)
- plt.scatter分类数据legend添加图例
- Matplotlib散点图加legend⭐⭐
- 结论
综上看到的几篇文章,其中从5中所给出的文章中可以看出当多次使用scatter画散点图时,使用legend图例给相应颜色种类的点增加标签。
以上是关于问题--在matplotlib的散点图中如何给不同种类颜色的点加标签?的主要内容,如果未能解决你的问题,请参考以下文章
来自 pandas 数据框的散点图中的 Matplotlib 图例