数据剖析绘图库Matplotlib

• 图例Legend 代表图形里的内容
• 网格Grid,图形中的虚线,True显示网格
• 点 Markers:示意点的形状。

基本的视觉元素有三种:点、线、柱状。剖析下面需求绘制什么图形?
学生为某科课程破费的时间和考试成绩两者之间的关系,查看两者之间的相关性。


make符号样式


符号颜色color

第一个图形绘制完成顺序

#1). 导入绘图库
import  matplotlib.pyplot as plt
import  numpy as np
#2). 建立画板figure
figure = plt.figure(figsize=(10, 10))
#3). 建立子图subplot/Axes
ax = plt.subplot(1, 1, 1)
#4). 准备数据
#从0-50分割成100份
x = np.linspace(0, 10, 100)
y = np.sin(x)
#6). 绘制
ax.plot(x, y, color='orange', marker='*', linestyle='-.')
ax.set_title('y = sinx')
ax.set_xlabel('x')
ax.set_ylabel('y')
#7). 显示图形
plt.show()

第一个图形绘制快速版

import matplotlib.pyplot as plt
import numpy as np

#1). 准备数据信息
x = np.linspace(0, 20, 100)
y = np.sin(x)

#2). 直接绘图
plt.plot(x, y)
#plt.scatter(x, y)
plt.title('y = sinx')
plt.xlabel('x')
plt.ylabel('y')

#3). 绘制图形并显示
plt.show()

多图绘制
多图案例

绘制步骤

案例一: 散点图和折线图
绘图需求: 基于某函数,并在其一定局限震惊的离散图。一定局限内震惊呢?y加个随机数

1.1 散点图绘制

.
子图绘制

#1). 导入绘图库
import  matplotlib.pyplot as plt
import  numpy as np
#2). 建立画板figure
figure = plt.figure(figsize=(10, 10))
#3). 建立子图subplot/Axes, 天生2行一列的子图,
#第一行第一列绘制sinx的图形, 第二行第一列绘制cosx的图形
ax1 = plt.subplot(2, 1, 1)
ax2 = plt.subplot(2, 1, 2)
#4). 准备数据
#从0-50分割成100份
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
#6). 绘制
ax1.plot(x, y1, color='orange', linestyle='-.')
ax1.set_title('y = sinx')
ax1.set_xlabel('x')
ax1.set_ylabel('y')

ax2.plot(x, y2, color='m', linestyle='-.')
ax2.set_title('y = cosx')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
#7). 显示图形
plt.show()

1.2 曲线图

2.

案例二: 柱状图
条形图(bar chart),也称为柱状图,是一种以长方形的长度为变量的统计图表,长方形的长
度与它所对应的变量数值呈一定比例。假设某项针对男女大学生购置饮用水兴趣的观察结果如下
表:

竖向条形绘制

import matplotlib.pyplot as plt

    # 1. 建立figure
    fig = plt.figure()

    # 2. 建立子图(1行2列)
ax1 = plt.subplot(1, 2, 1)
ax1.set_title('男生购置饮用水情形的观察结果')
ax2 = plt.subplot(1, 2, 2)
ax2.set_title('女生购置饮用水情形的观察结果')

    # ***********中文乱码若何解决
    plt.rcParams['font.sans-serif'] = ['SimHei']

    # 3. 加载数据信息
waters = ['碳酸饮料', '绿茶', '矿泉水', '其它', '果汁']
boy_buy_num = [6, 7, 6, 2, 1]
girl_buy_num = [9, 4, 4, 6, 5]

    # 4. 绘制条形图
    bar_width = 0.4
    ax1.bar(waters, boy_buy_num, bar_width, color='orange')
    ax2.bar(waters, girl_buy_num, bar_width, color='g')

    # 5. 保留图片到内陆
    # plt.show()
plt.savefig('bar.png')

横向条形图绘制

    import matplotlib.pyplot as plt

        # 1. 建立figure
        fig = plt.figure()

        # 2. 建立子图(1行2列)
    ax1 = plt.subplot(2, 1, 1)
    ax1.set_title('男生购置饮用水情形的观察结果')
    ax2 = plt.subplot(2, 1, 2)
    ax2.set_title('女生购置饮用水情形的观察结果')

        # ***********中文乱码若何解决
        plt.rcParams['font.sans-serif'] = ['SimHei']

        # 3. 加载数据信息
    waters = ['碳酸饮料', '绿茶', '矿泉水', '其它', '果汁']
    boy_buy_num = [6, 7, 6, 2, 1]
    girl_buy_num = [9, 4, 4, 6, 5]

        # 4. 绘制条形图
    bar_width = 0.4
    ax1.barh(waters, boy_buy_num, height=bar_width, color='orange')
    ax2.barh(waters, girl_buy_num, height=bar_width, color='g')

        # 5. 保留图片到内陆
        # plt.show()
    plt.savefig('bar.png')

案例二: 柱状图

并列条形图: 若要将男生与女生的观察情形画出两个条形图一块显示,则可以使用 bar两次,
并调整 条形图位置坐标以及响应刻度,使得两组条形图能够并排显示


并列条形图绘制

import matplotlib.pyplot as plt

import numpy as np

    # ***********中文乱码若何解决
plt.rcParams['font.sans-serif'] = ['SimHei']
    # 加载数据信息
waters = ['碳酸饮料', '绿茶', '矿泉水', '其它', '果汁']
boy_buy_num = [6, 7, 6, 2, 1]
girl_buy_num = [9, 4, 4, 6, 5]

    # 调整条形图的横坐标
bar_width = 0.4
boy_index = np.arange(len(waters))  # [0, 1, 2, 3, 4]
girl_index = boy_index + bar_width  # numpy流传机制, [0.4, 1.4, 2.4, 3.4, 4.4]

    # 绘制条形图
plt.bar(boy_index, boy_buy_num, bar_width, color='orange', label='男生')
plt.bar(girl_index, girl_buy_num, bar_width, color='g', label='女生')
    # 修改无意义的横坐标为有意义的横坐标
    plt.xticks(boy_index + bar_width / 2, waters)
    plt.ylabel("购置量")
    plt.title("购置饮水情形的观察表")

    plt.legend()
        # 保留图片到内陆
            # plt.show()
plt.savefig('bar.png')

K近邻算法分类可视化剖析

K近邻算法原理
K近邻算法: 近朱者赤,近墨者黑。新的数据点离谁(一个或多个近邻点)最近, 就和谁属于统一类

K近邻算法数据集
在skilit-learn中内置了若干个玩具数据集(Toy Datasets), 另有一些API可以自己着手天生数
据集, 如下面代码所示:

K近邻算法分类
我们已经天生一系列数据集看成机械学习的训练数据集,接下来就是凭据KNN算法找一个
模子, 然后凭据模子对未知数据举行分类。

K近邻算法回归可视化剖析
K近邻算法回归原理
K近邻算法也可以用于回归, 原理和分类相同。 盘算每个数据点的展望值时,模子会选择离该
数据点最近的若干个点,并将它们的y值取平均值,并作为新数据点的展望值

K近邻分类算法

from sklearn.datasets import  make_blobs
from sklearn.neighbors import  KNeighborsClassifier
import  matplotlib.pyplot as plt
    # 天生数据集, eg: x=(花瓣长度, 花茎的长度), y=(第一种花: 鸢尾花1). 训练集
    X, y = make_blobs(n_samples=200, n_features=2, centers=2, random_state=8)

        # 若何去寻找一个模子,并最终凭据模子预判新的测试数据所属的分类?
        # 机械学习: 寻找一个函数/模子的历程. f(x)='xxxxxxx', f(image)='cat', f(alpha-go)=5x5, f('对话')=‘对话’
clf = KNeighborsClassifier()
clf.fit(X, y)       # 拟合(找模子的历程)
test_data = [6, 3]  # 测试集: 测试模子利害/正确率的数据集
class_name = clf.predict([test_data])
print("新数据点的分类是: ", class_name)

    # # 给定一个新的特征信息, 剖析属于哪一类?
    # test_data = [6, 3]
    #
    # # 通过绘制散点图, 清晰的看到分为2类
    # plt.scatter(X[:, 0], X[:, 1], edgecolors='orange', color='white')
    # plt.scatter(test_data[0], test_data[1], marker='*', color='r')
    # plt.show()

k近邻的回归算法

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_regression
from sklearn.neighbors import KNeighborsRegressor

#发生回归的数据集(训练集)
X, y = make_regression(n_samples=100, n_features=1, n_informative=1,
                       noise=50, random_state=8)

#通过K近邻的回归器, 拟合/寻找模子
reg = KNeighborsRegressor()
reg.fit(X, y)

#给定一些新的数据(测试集),展望y值
"""
一维数组: np.linspace [1, 2, 3, 4, 5]
n*1数组: rwshape(-1, 1)
reg.predict([[1], [2]])  # 展望市需要通报的信息
"""
test_x = np.linspace(-3, 3, 100).reshape(-1, 1)
test_y = reg.predict(test_x)
#print("模子的准确度: ", reg.score(X, y))

#***********中文乱码若何解决
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#绘制图形
plt.scatter(X, y, marker='*', color='orange', edgecolors='orange', label='训练集')
plt.plot(test_x, test_y, color='black', label='测试集')
plt.title('KNN Regressor')
plt.legend()
plt.show()

seaborn库

官方网址:
https://seaborn.pydata.org/introduction.html
seaborn整体气概
Seaborn共提供5种主题气概,分别为darkgrid、whitegrid、dark、 white以及ticks。
行使set()和set_style()两个函数对整体气概举行控制


设置子图气概
通过关键字with,对差别子图设置气概


seaborn内容气概
对图中内容举行设置,包罗线条颜色,粗细和刻度等