Python可视化数据分析10、Matplotlib库

举报
红目香薰 发表于 2022/07/29 10:37:40 2022/07/29
【摘要】 ​ ​编辑Python可视化数据分析10、Matplotlib库📋前言📋💝博客:【红目香薰的博客_CSDN博客-计算机理论,2022年蓝桥杯,MySQL领域博主】💝✍本文由在下【红目香薰】原创,首发于CSDN✍🤗2022年最大愿望:【服务百万技术人次】🤗💝Python初始环境地址:【Python可视化数据分析01、python环境搭建】💝 环境需求环境:win10开发工具:P...

 编辑

Python可视化数据分析10、Matplotlib库

📋前言📋

💝博客:【红目香薰的博客_CSDN博客-计算机理论,2022年蓝桥杯,MySQL领域博主】💝

✍本文由在下【红目香薰】原创,首发于CSDN✍

🤗2022年最大愿望:【服务百万技术人次】🤗

💝Python初始环境地址:【Python可视化数据分析01、python环境搭建】💝 


环境需求

环境:win10

开发工具:PyCharm Community Edition 2021.2

数据库:MySQL5.6

目录

Python可视化数据分析10、Matplotlib库

📋前言📋

环境需求


前置环境

前言

绘制直线

plot函数

绘制柱状图

堆积柱状图

绘制并列柱状图

绘制直方图

绘制饼图

绘制分裂式饼图

绘制散点图

绘制3D图像

3D曲面图

3D散点图

3D条状图



前置环境

pip3 config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
pip3 config list
pip3 install --upgrade pip
pip3 install numpy
pip3 install matplotlib

编辑东西比较大引入的慢一些,别急。

前言

Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量2D图表和一些基本的3D图表。
Matplotlib首次发表于2007年,在开源和社区的推动下,现在基于Python的各个科学计算领域都得到了广泛应用。
Matplotlib中应用最广的模块是pyplot模块,pyplot模块中的每个绘图函数都可以对图形进行一些更改。

绘制直线

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
x = np.arange(1, 11)
y = 2 * x
plt.title("我是标题")
plt.xlabel("我是X轴")
plt.ylabel("我是Y轴")
plt.plot(x, y)
plt.show()

编辑

不规律数值

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
x = np.arange(1, 11)
y = 2 * x
plt.title("我是标题")
plt.xlabel("我是X轴")
plt.ylabel("我是Y轴")
plt.plot((1, 5, 1, 5, 7, 5, 5, 9, 1, 5), y)
plt.show()

编辑

plot函数

plot()函数可以传入多个参数,其中第3个参数表示线条的颜色以及类型,第4个参数表示线条的宽度

字符

含义

-

实线样式

--

短横线样式

-.

点划线样式

:

虚线样式

.

点标记

,

像素标记

o

圆标记

v

倒三角标记

^

正三角标记

<

左三角标记

>

右三角标记

1

下箭头标记

2

上箭头标记

3

左箭头标记

4

右箭头标记

s

正方形标记

p

五边形标记

*

星形标记

h

六边形标记1

'H'

六边形标记2

+

加号标记

x

X标记

D

菱形标记

'd'

窄菱形标记

|

竖直线标记

_

水平线标记

b

蓝色

g

绿色

r

红色

c

青色

m

品红色

y

黄色

k

黑色

w

白色

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
x = np.arange(1, 11)
y = 2 * x
plt.title("我是标题")
plt.xlabel("我是X轴")
plt.ylabel("我是Y轴")
plt.plot(x, y, "^m")
plt.show()

编辑

绘制柱状图

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
x = ['2018年', '2019年', '2020年', '2021年', '2022年']
y = np.random.randint(0, 100, 5)
plt.bar(x, y)
plt.title("产量变化")
plt.show()

编辑

堆积柱状图

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
x = ['2018年', '2019年', '2020年', '2021年', '2022年']
y1 = np.random.randint(10, 20, 5)
y2 = np.random.randint(10, 20, 5)
plt.bar(x, y1)
plt.bar(x, y2, bottom=y1)
plt.ylabel("产量(万亿吨)")
plt.legend(labels=["粮食", "小麦"], loc="upper left")
plt.show()

编辑

绘制并列柱状图

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

x1 = np.arange(5)
y1 = np.random.randint(10, 20, 5)
y2 = np.random.randint(10, 20, 5)
bar_width = 0.35
plt.bar(x1, y1, bar_width)
plt.bar(x1 + bar_width, y2, bar_width)
plt.ylabel("产量(万亿吨)")
tick_label = ['2018年', '2019年', '2020年', '2021年', '2022年']
plt.xticks(x1 + bar_width / 2, tick_label)
plt.legend(labels=["粮食", "小麦"], loc="upper left")
plt.show()

编辑

绘制直方图

import numpy as np
import matplotlib.pyplot as plt
import random

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

a = [random.randint(80, 150) for i in range(250)]
print(a)
print(max(a) - min(a))

# 计算组数
d = 3  # 组距
num_bins = (max(a) - min(a)) // d

# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
plt.hist(a, num_bins)

# 设置x轴刻度
plt.xticks(range(min(a), max(a) + d, d))

# 设置网格
plt.grid(alpha=0.4)
plt.show()

编辑

绘制饼图

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

labels =['2018年', '2019年', '2020年', '2021年', '2022年']
y = np.random.rand(5)
plt.pie(y,
        labels=labels,
        autopct="%3.1f%%",
        startangle=45,  # 第一个饼片旋转角度
        shadow=True,
        pctdistance=0.8,
        labeldistance=1.2)
plt.show()

编辑  

绘制分裂式饼图

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

labels =['2018年', '2019年', '2020年', '2021年', '2022年']
y = np.random.rand(5)
plt.pie(y,
        explode=(0.1, 0.1, 0.1, 0.1, 0.1),  # 边缘偏离直径的百分比
        labels=labels,
        autopct="%3.1f%%",
        startangle=45,  # 第一个饼片旋转角度
        shadow=True,
        pctdistance=0.8,
        labeldistance=1.2)
plt.show()

编辑

绘制散点图

散点图又称为散点分布图,它以一个特征为横坐标,以另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系。
散点图可以提供两类关键信息:
特征之间是否存在数值或者数量的关联趋势,关联趋势是线性的还是非线性的
如果某一个点或者某几个点偏离大多数点,则这些点就是离群值,可以进一步分析这些离群值是否在建模分析中产生很大的影响

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

x = np.arange(0, 100)
y = np.random.normal(1, 20, 100)
plt.scatter(x, y, label='坐标点', color='k', s=25, marker="o")
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('标题')
plt.legend()
plt.show()

编辑

绘制3D图像

3D曲面图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

fig = plt.figure()  # 使用figure对象
ax = Axes3D(fig)  # 创建3D轴对象
X = np.arange(-2, 2, 0.1)  # X坐标数据
Y = np.arange(-2, 2, 0.1)  # Y坐标数据
X, Y = np.meshgrid(X, Y)  # 计算3维曲面分格线坐标


# 用于计算X/Y对应的Z值
def f(x, y):
    return (1 - y ** 5 + x ** 5) * np.exp(-x ** 2 - y ** 2)


# plot_surface()函数绘制对应的曲面
ax.plot_surface(X, Y, f(X, Y), rstride=1, cstride=1)
plt.show()  # 显示图形

编辑

3D散点图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

xs = np.random.randint(30, 40, 100)
ys = np.random.randint(20, 30, 100)
zs = np.random.randint(10, 20, 100)
xs2 = np.random.randint(50, 60, 100)
ys2 = np.random.randint(30, 40, 100)
zs2 = np.random.randint(50, 70, 100)
xs3 = np.random.randint(10, 30, 100)
ys3 = np.random.randint(40, 50, 100)
zs3 = np.random.randint(40, 50, 100)
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(xs, ys, zs)
ax.scatter(xs2, ys2, zs2, c='r', marker='^')
ax.scatter(xs3, ys3, zs3, c='g', marker='*')
ax.set_xlabel('X label')
ax.set_ylabel('Y label')
ax.set_zlabel('Z label')
plt.show()

编辑

3D条状图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

x = np.arange(8)
y = np.random.randint(0, 10, 8)
y2 = y + np.random.randint(0, 3, 8)
y3 = y2 + np.random.randint(0, 3, 8)
y4 = y3 + np.random.randint(0, 3, 8)
y5 = y4 + np.random.randint(0, 3, 8)
clr = ['red', 'green', 'blue', 'black', 'white', 'yellow', 'orange', 'pink']
fig = plt.figure()
ax = Axes3D(fig)
ax.bar(x, y, 0, zdir='y', color=clr)
ax.bar(x, y2, 10, zdir='y', color=clr)
ax.bar(x, y3, 20, zdir='y', color=clr)
ax.bar(x, y4, 30, zdir='y', color=clr)
ax.bar(x, y5, 40, zdir='y', color=clr)
ax.set_xlabel('X label')
ax.set_ylabel('Y label')
ax.set_zlabel('Z label')
plt.show()

编辑

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。