📋前言📋
💝博客:【红目香薰的博客_CSDN博客-计算机理论,2022年蓝桥杯,MySQL领域博主】💝
✍本文由在下【红目香薰】原创,首发于CSDN✍
🤗2022年最大愿望:【服务百万技术人次】🤗
💝Python初始环境地址:【Python可视化数据分析01、python环境搭建】💝
环境需求
环境:win10
开发工具:PyCharm Community Edition 2021.2
数据库:MySQL5.6
目录
- 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()函数可以传入多个参数,其中第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()
- 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() # 显示图形
- 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()
- 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()