Matplotlib基础用法
1. Matplotlib安装
pip安装
!pip install matplotlib
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: matplotlib in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (3.7.5)
Requirement already satisfied: contourpy>=1.0.1 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (1.1.1)
Requirement already satisfied: cycler>=0.10 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (4.54.1)
Requirement already satisfied: kiwisolver>=1.0.1 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (1.4.7)
Requirement already satisfied: numpy<2,>=1.20 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (1.24.4)
Requirement already satisfied: packaging>=20.0 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (24.1)
Requirement already satisfied: pillow>=6.2.0 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (10.4.0)
Requirement already satisfied: pyparsing>=2.3.1 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (3.1.4)
Requirement already satisfied: python-dateutil>=2.7 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (2.9.0.post0)
Requirement already satisfied: importlib-resources>=3.2.0 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from matplotlib) (6.4.0)
Requirement already satisfied: zipp>=3.1.0 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from importlib-resources>=3.2.0->matplotlib) (3.20.2)
Requirement already satisfied: six>=1.5 in /root/anaconda3/envs/pyspark/lib/python3.8/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)
[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable.It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.[0m[33m
[0m
导入Matplotlib
import matplotlib
检查Matplotlib版本
print(matplotlib.__version__)
3.7.5
2. PyPlot
多数的Matplotlib实用包方在pyplot子模块下
import matplotlib.pyplot as plt
# 画一条直线从 [0 , 6] 的位置 到[0 , 250]
import numpy as np
xp = np.array([0,6])
yp = np.array([0 , 250])
plt.plot(xp,yp)
plt.show()
1. 折线图
1. 绘制 x 和 y 点
plot()函数用于在图表中绘制点(标记)。
默认情况下, plot()函数从左到右绘制一条线。
该函数采用两参数来指定四组中的点。
- 参数 1 是一个包含 x 轴上的点的数组。
- 参数 2 是一个包含 y 轴上的点的数组。
如果我们需要绘制一条从 (1, 3) 到 (8, 10) 的线,我们必须将两个数组 [1, 8] 和 [3, 10] 传递给 plot 函数。
import matplotlib.pyplot as plt
import numpy as np
# 在图中从位置(1,3)到位置(8,10)画一条线
xp = np.array([1,8])
yp = np.array([3,10])
plt.plot(xp,yp)
plt.show()
2 无线绘图
仅绘制标记,使用快捷字符串符号参数‘o’,这意味着环或者点
# 绘制两个点 [1,3] [8,10]
plt.plot(xp,yp,'o')
plt.show()
3 多点绘制
给出各个洲的数组的内容即可,但是各轴数组的长度和大小相同
xp = np.array([1,4,3,6,5])
yp = np.array([9,8,13,11,9])
plt.plot(xp,yp)
plt.show()
4 默认X点
如果我们不指定 x 轴上的点,它们将获得默认值 0,1,2,3(等等,取决于 y 点的长度)。
因此,如果我们采用与上述相同的示例,并省略 x 点,则要求将如下所示:
yp = np.array([9,8,13,11,9])
plt.plot(yp)
plt.show()
5 标记
关键参数 maker , 用指定的标记强调每个点:
import matplotlib.pyplot as plt
import numpy as np
# 使用‘o’点
yp = np.array([3,8,1,10])
plt.plot(yp,marker = 'o')
plt.show()
# 使用‘*‘去强调
yp = np.array([3,8,1,10])
plt.plot(yp,marker = '*')
plt.show()
1 标记参考
您可以选择以下任何标记:
Marker | Description | Marker | Description | Marker | Description | Marker | Description | Marker | Description |
---|---|---|---|---|---|---|---|---|---|
o | Circle | * | Star | . | Point | , | Pixel | x | X |
X | X (filled) | + | Plus | P | Plus (filled) | s | Square | D | Diamond |
d | Diamond (thin) | p | Pentagon | H | Hexagon | h | Hexagon | v | Triangle Down |
^ | Triangle Up | < | Triangle Left | > | Triangle Right | 1 | Tri Down | 2 | Tri Up |
3 | Tri Left | 4 | Tri Right | ` | ` | Vine | _ | Hline |
2 线参考
| Line Syntax | Description | Line Syntax | Description | Line Syntax | Description | Line Syntax | Description |2
|-------------|--------------|-------------|--------------|-------------|--------------|-------------|-------------------|
| -
| Solid line | :
| Dotted line | --
| Dashed line | -.
| Dashed/dotted line |
3 颜色参考
Color Syntax | Description | Color Syntax | Description | Color Syntax | Description | Color Syntax | Description |
---|---|---|---|---|---|---|---|
r | Red | g | Green | b | Blue | c | Cyan |
m | Magenta | y | Yellow | k | Black | w | White |
4 格式化字符串 fmt
您还可以使用由格式字符串参数来指定标记。
此参数也称为 fmt,使用以下语法编写:
marker | line | color
yp = np.array([3,8,1,10])
plt.plot(yp , 'o:r')
plt.show()
plt.plot(yp , 'o-b')
plt.show()
6 标记尺寸
您可以使用关键字参数 markersize 或 ms 来设置标记的大小:
yp = np.array([3,8,1,10])
plt.plot(yp , marker = 'o' , ms = 20)
plt.show()
plt.plot(yp , marker = 'o' , ms = 5)
plt.show()
7 标记颜色
# 使用关键字参数 markeredgecolor 或 mec 来表示标记的边缘颜色
yp = np.array([3,8,1,10])
plt.plot(yp , marker = 'o' , ms = 20 , mec = 'r')
plt.show()
plt.plot(yp , marker = 'o' , ms = 20 , markeredgecolor = 'g')
plt.show()
# 使用关键字参数 markerfacecolor 或 mfc 来表示标记的边缘颜色
yp = np.array([3,8,1,10])
plt.plot(yp , marker = 'o' , ms = 20 , mfc = 'r')
plt.show()
plt.plot(yp , marker = 'o' , ms = 20 , markerfacecolor = 'g' , mec = 'r')
plt.show()
# 使用16进制设置颜色的值
plt.plot(yp , marker = 'o' , ms = 20 , mec = '#ACAF50' , mfc = '#AA2456')
plt.show()
# 使用颜色英文名称
plt.plot(yp , marker = 'o' , ms = 20 , mec = 'green' , mfc = 'hotpink')
plt.show()
6 线型
您可以使用关键字参数 linestyle 或 ls 来更改绘制线的样式:
import matplotlib.pyplot as plt
import numpy as np
yp = np.array([3,8,1,10])
plt.plot(yp , linestyle = 'dotted')
plt.show()
plt.plot(yp , ls = 'dashed')
plt.show()
1 更加简短的语法
linestyle -> ls
dotted -> :
dashed -> --
2 线参考
Line Syntax | Description | Line Syntax | Description | Line Syntax | Description | Line Syntax | Description |
---|---|---|---|---|---|---|---|
- | Solid line | : | Dotted line | -- | Dashed line | -. | Dashed/dotted line |
3 线条颜色
使用关键参数color或C来设置线条颜色:
yp = np.array([3,8,1,10])
plt.plot(yp , color = 'r')
plt.show()
# 使用16进制也行
plt.plot(yp , color = '#AAA999')
plt.show()
# 使用英文单词也行
plt.plot(yp , c = 'hotpink')
plt.show()
4 线宽
可以使用关键字参数linewidth 或 lw 来改变 线条的宽度
改值为一个浮点数 , 以磅为单位:
yp = np.array([3,8,1,10])
plt.plot(yp,lw = '20.5')
plt.show()
plt.plot(yp,lw = '1.5')
plt.show()
4 多行
通过简单地添加更多的plt.plot()函数来回执多条任意线
y1 = np.array([3,8,1,10])
y2 = np.array([6,2,7,11])
plt.plot(y1)
plt.plot(y2)
plt.show()
还可以通过在同一 plt.plot() 函数中为每条线添加 x 轴和 y 轴的点来绘制多条线。
(在上面的例子中,我们只指定了 y 轴上的点,这意味着 x 轴上的点得到了默认值(0,1,2,3)。)
x 和 y 值成对出现:
x1 = np.array([3,8,1,10])
y1 = np.array([6,2,7,11])
y2 = np.array([3,8,1,10])
x2 = np.array([6,2,7,11])
plt.plot(x1,y1,x2,y2)
plt.show()
7 标签
1 为绘图创建标签
使用Pyplot , 可以使用xlabel() 和 ylabel() 函数为x轴和y轴设置标签
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
# 设置matplotlib字体为楷体
# plt.rcParams['font.sans-serif'] = ['Noto Sans CJK SC']
x = np.array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240 , 250 , 260 , 270 , 280 , 290 , 300 , 310 , 320 , 330])
plt.plot(x,y)
plt.xlabel('Average Pulse')
plt.ylabel('Calories Burned')
plt.show()
2 为绘图创建标题
使用Pyplot,可以使用title()函数为绘图设置标题
x = np.array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240 , 250 , 260 , 270 , 280 , 290 , 300 , 310 , 320 , 330])
plt.title('Average Pulse/Calories Burned')
plt.plot(x,y)
plt.xlabel('Average Pulse')
plt.ylabel('Calories Burned')
plt.show()
3 设置标题和标签的字体属性
使用xlabel(),ylabel()和title()中的fontdict参数来设置标题和标签的字体属性。
x = np.array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240 , 250 , 260 , 270 , 280 , 290 , 300 , 310 , 320 , 330])
plt.plot(x,y)
font1 = {'family':'serif' , 'color':'blue' , 'size':20}
font2 = {'family':'serif' , 'color':'darkred' , 'size':15}
plt.title('Average Pulse/Calories Burned' , fontdict = font1)
plt.xlabel('Average Pulse', fontdict = font2)
plt.ylabel('Calories Burned', fontdict = font2)
plt.show()
4 定位标题
使用title()中的loc参数来定位标题
合法值为'left' \ 'right' \ 'center' 默认为 'center'
x = np.array([80,85,90,95,100,105,110,115,120,125])
y = np.array([240 , 250 , 260 , 270 , 280 , 290 , 300 , 310 , 320 , 330])
plt.plot(x,y)
font1 = {'family':'serif' , 'color':'blue' , 'size':20}
font2 = {'family':'serif' , 'color':'darkred' , 'size':15}
plt.title('Average/Burned' , fontdict = font1 , loc = 'right')
plt.xlabel('Average Pulse', fontdict = font2)
plt.ylabel('Calories Burned', fontdict = font2)
plt.show()
8 网格线
1 向绘图中添加网格线
使用Pyplot , 使用grid()函数将网格线添加到绘图中
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
x = np.array([80 , 85 , 90 , 95 , 100 , 105 , 110 , 115 , 120 , 125])
y = np.array([240 , 250 , 260 , 270 , 280 , 290 , 300 , 310 , 320 , 330])
plt.title('Average/Burned')
plt.xlabel('Average Pulse')
plt.ylabel('Calories Burned')
plt.plot(x,y)
plt.grid()
plt.show()
2 指定要显示的网格线
使用grid()函数中的轴参数来制定要显示的网格数
axis = 'x|y|both'
合法值为 : 'x' , 'y' 和 'both' , 默认为'both'
x = np.array([80 , 85 , 90 , 95 , 100 , 105 , 110 , 115 , 120 , 125])
y = np.array([240 , 250 , 260 , 270 , 280 , 290 , 300 , 310 , 320 , 330])
plt.title('Average/Burned')
plt.xlabel('Average Pulse')
plt.ylabel('Calories Burned')
plt.plot(x,y)
plt.grid(axis = 'x')
plt.show()
3 设置网格的线属性
可以设置网格的线条属性 , 如下所示:grid(color = 'color' , linestyle = 'linestyle' , linewidth = number)
使用 c , ls , lw 也是合法的
x = np.array([80 , 85 , 90 , 95 , 100 , 105 , 110 , 115 , 120 , 125])
y = np.array([240 , 250 , 260 , 270 , 280 , 290 , 300 , 310 , 320 , 330])
plt.title('Average/Burned')
plt.xlabel('Average Pulse')
plt.ylabel('Calories Burned')
plt.plot(x,y)
plt.grid(axis = 'x' , color = 'red' , linestyle = ':' , linewidth = 1)
plt.show()
# 使用 缩写 color = c , linestyle = ls , linewidth = lw
x = np.array([80 , 85 , 90 , 95 , 100 , 105 , 110 , 115 , 120 , 125])
y = np.array([240 , 250 , 260 , 270 , 280 , 290 , 300 , 310 , 320 , 330])
plt.title('Average/Burned')
plt.xlabel('Average Pulse')
plt.ylabel('Calories Burned')
plt.plot(x,y)
plt.grid(axis = 'x' , c = 'red' , ls = ':' , lw = 1)
plt.show()
9 显示多图
1 显示多图
使用subplots() , 您可以在一张图中绘制多个图
import numpy as np
import matplotlib.pyplot as plt
# plot1:
x = np.array([0,1,2,3])
y = np.array([3,8,1,10])
plt.subplot(1,2,1) # 1,2,1 含义是 一行两列 , 第一列的子图
plt.plot(x,y)
# plot2
x = np.array([0,1,2,3])
y = np.array([10,20,30,40])
plt.subplot(1,2,2) # 1,2,2 含义是 一行两列 , 第二列的子图
plt.plot(x,y)
plt.show()
# plot1:
x = np.array([0,1,2,3])
y = np.array([3,8,1,10])
plt.subplot(2,1,1) # 2,1,1 含义是 两行一列 , 第一行的子图
plt.plot(x,y)
# plot2
x = np.array([0,1,2,3])
y = np.array([10,20,30,40])
plt.subplot(2,1,2) # 2,1,2 含义是 两行一列 , 第二行的子图
plt.plot(x,y)
plt.show()
在n行m列的时候 , (n,m,x) 中的 x 是 从左向右 , 从上向下 第几个子图
# plot1:
x = np.array([0,1,2,3])
y = np.array([3,8,1,10])
plt.subplot(2,2,1) # 2,1,1 含义是 两行两列 , 第1个子图
plt.plot(x,y)
# plot2
x = np.array([0,1,2,3])
y = np.array([10,20,30,40])
plt.subplot(2,2,2) # 2,1,2 含义是 两行两列 , 第2个子图
plt.plot(x,y)
# plot1:
x = np.array([0,1,2,3])
y = np.array([3,8,1,10])
plt.subplot(2,2,3) # 2,1,1 含义是 两行两列 , 第3个的子图
plt.plot(x,y)
# plot2
x = np.array([0,1,2,3])
y = np.array([10,20,30,40])
plt.subplot(2,2,4) # 2,1,2 含义是 两行两列 , 第4个的子图
plt.plot(x,y)
plt.show()
2 为每个图加上标题
-
使用title()函数为每个图添加标签
-
使用suptitle()为主图设置标签
# plot1:
x = np.array([0,1,2,3])
y = np.array([3,8,1,10])
plt.subplot(2,1,1) # 2,1,1 含义是 两行一列 , 第一行的子图
plt.plot(x,y)
plt.title('ASA')
# plot2
x = np.array([0,1,2,3])
y = np.array([10,20,30,40])
plt.subplot(2,1,2) # 2,1,2 含义是 两行一列 , 第二行的子图
plt.plot(x,y)
plt.title('BSB')
plt.show()
# plot1:
x = np.array([0,1,2,3])
y = np.array([3,8,1,10])
plt.subplot(1,2,1) # 1,2,1 含义是 一行两列 , 第一列的子图
plt.plot(x,y)
plt.title('ASA')
# plot2
x = np.array([0,1,2,3])
y = np.array([10,20,30,40])
plt.subplot(1,2,2) # 1,2,2 含义是 一行两列 , 第二列的子图
plt.plot(x,y)
plt.title('BSB')
plt.suptitle('AVB')
plt.show()
3 散点图
借助 Pyplot,您可以使用 scatter() 函数绘制散点图。
scatter() 函数为每个观察绘制一个点。 它需要两个长度相同的数组,一个用于 x 轴的值,另一个用于 y 轴上的值:
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,3,6,7,8,9,3,23,5,67,3,34,56])
y = np.array([1,2,4,67,8,23,45,7,9,23,56,8,10])
plt.scatter(x,y)
plt.show()
1 颜色
使用color 或者 c 参数为每个 散点图设置 自己的颜色:
x = np.array([1,3,6,7,8,9,3,23,5,67,3,34,56])
y = np.array([1,2,4,67,8,23,45,7,9,23,56,8,10])
# 支持部分单词首字母
plt.scatter(x,y ,color = 'r')
plt.show()
# 支持140中英文颜色单词
plt.scatter(x,y ,color = 'hotpink')
plt.show()
# 支持16进制
plt.scatter(x,y ,color = '#AAA123')
plt.show()
2 支持混点
- 支持混点 , 只需要给多个scatter()就可以实现 , 最后show()即可
x = np.array([1,3,6,7,8,9,3,23,5,67,3,34,56])
y = np.array([1,2,4,67,8,23,45,7,9,23,56,8,10])
plt.scatter(x,y ,color = 'r')
y = np.array([1,3,6,7,8,9,3,23,5,67,3,34,56])
x = np.array([1,2,4,67,8,23,45,7,9,23,56,8,10])
plt.scatter(x,y ,color = 'hotpink')
plt.show()
3 为每一个点上颜色
-
可以通过使用颜色数组作为C参数的值来为每个点设置特定颜色,
-
不能为此使用color参数,只能使用c参数。
x = np.array([1,3,6,7,8,9,3,23,5,67,3,34,56])
y = np.array([1,2,4,67,8,23,45,7,9,23,56,8,10])
# 使用颜色映射生成颜色
colors = plt.cm.viridis(np.linspace(0, 1, len(x)))
plt.scatter(x, y, color=colors)
plt.show()
4 颜色图
颜色图就是一个颜色列表 , 每种颜色都以一个范围从0到100的值
viridis 就是颜色图 , 范围是从 0 紫色 到 100 黄色
x = np.array([1,3,6,7,8,9,3,23,5,67,3,34,56])
y = np.array([1,2,4,67,8,23,45,7,9,23,56,8,10])
colors = np.array([0,10,20,30,40,50,60,70,80,90,100,55,77])
plt.scatter( x , y , c = colors , cmap = 'viridis')
plt.show()
x = np.array([1,3,6,7,8,9,3,23,5,67,3,34,56])
y = np.array([1,2,4,67,8,23,45,7,9,23,56,8,10])
colors = np.array([0,10,20,30,40,50,60,70,80,90,100,55,77])
plt.scatter( x , y , c = colors , cmap = 'viridis')
# 通过plt.colorbar() 语句在绘画中包含颜色图
plt.colorbar()
plt.show()
- 部分颜色图显示
Name | Reverse | Name | Reverse | Name | Reverse | Name | Reverse | Name | Reverse |
---|---|---|---|---|---|---|---|---|---|
Accent | Accent_r | Blues | Blues_r | BrBG | BrBG_r | BuGn | BuGn_r | BuPu | BuPu_r |
CMRmap | CMRmap_r | Dark2 | Dark2_r | GnBu | GnBu_r | Greens | Greens_r | Greys | Greys_r |
OrRd | OrRd_r | PRGn | PRGn_r | Paired | Paired_r | Pastel1 | Pastel1_r | Pastel2 | Pastel2_r |
PiYG | PiYG_r | PuBu | PuBu_r | PuBuGn | PuBuGn_r | PuOr | PuOr_r | PuRd | PuRd_r |
Purples | Purples_r | RdBu | RdBu_r | RdGy | RdGy_r | RdPu | RdPu_r | RdYlBu | RdYlBu_r |
RdYlGn | RdYlGn_r | Reds | Reds_r | Set1 | Set1_r | Set2 | Set2_r | Set3 | Set3_r |
Spectral | Spectral_r | Wistia | Wistia_r | YlGn | YlGn_r | YlGnBu | YlGnBu_r | YlOrBr | YlOrBr_r |
YlOrRd | YlOrRd_r | afmhot | afmhot_r | autumn | autumn_r | binary | binary_r | bone | bone_r |
brg | brg_r | bwr | bwr_r | cividis | cividis_r | cool | cool_r | coolwarm | coolwarm_r |
copper | copper_r | cubehelix | cubehelix_r | flag | flag_r | gist_earth | gist_earth_r | gist_gray | gist_gray_r |
gist_heat | gist_heat_r | gist_ncar | gist_ncar_r | gist_rainbow | gist_rainbow_r | gist_stern | gist_stern_r | gist_yarg | gist_yarg_r |
gnuplot | gnuplot_r | gnuplot2 | gnuplot2_r | gray | gray_r | hot | hot_r | hsv | hsv_r |
inferno | inferno_r | jet | jet_r | magma | magma_r | nipy_spectral | nipy_spectral_r | ocean | ocean_r |
pink | pink_r | plasma | plasma_r | prism | prism_r | rainbow | rainbow_r | seismic | seismic_r |
spring | spring_r | summer | summer_r | tab10 | tab10_r | tab20 | tab20_r | tab20b | tab20b_r |
tab20c | tab20c_r | terrain | terrain_r | twilight | twilight_r | twilight_shifted | twilight_shifted_r | viridis | viridis_r |
winter | winter_r |
5 尺寸
使用 S 参数更改点的大小。
就像颜色一样 , 确保大小数组的长度与 X和Y 轴的数组长度相同
x = np.array([1, 3, 6, 7, 8, 9, 3, 23, 5, 67, 3, 34, 56])
y = np.array([1, 2, 4, 67, 8, 23, 45, 7, 9, 23, 56, 8, 10])
colors = np.array([0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 55, 77])
# 为每个点独立指定大小
sizes = np.array([20, 50, 80, 100, 40, 60, 30, 90, 120, 70, 50, 110, 130])
plt.scatter(x, y, c=colors, s=sizes , cmap = 'Accent')
plt.colorbar()
plt.show()
6 透明度
使用alpha参数调整点的透明度
就像颜色一样 , 确保大小数组的长度x和y轴的数组长度相同
x = np.array([1, 3, 6, 7, 8, 9, 3, 23, 5, 67, 3, 34, 56])
y = np.array([1, 2, 4, 67, 8, 23, 45, 7, 9, 23, 56, 8, 10])
colors = np.array([0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 55, 77])
# 为每个点独立指定大小
sizes = np.array([20, 50, 80, 100, 40, 60, 30, 90, 120, 70, 50, 110, 130])
plt.scatter(x, y, c=colors, s=sizes , cmap = 'Accent' , alpha = 0.2)
plt.colorbar()
plt.show()
4 柱状图
使用 bar() 绘制柱状图
import numpy as np
import matplotlib.pyplot as plt
x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])
plt.bar(x,y)
plt.show()
-
bar() 函数采用描述条形布局的参数。
-
类别及其值由第一个和第二个参数表示为数组
-
x , y 对象并不是必须为 numpy arry对象
x = ['SPARK','HBASE']
y = [400,300]
plt.bar(x,y)
plt.show()
1 水平柱状图
水平显示柱状图 使用 barh()
x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])
plt.barh(x,y)
plt.show()
2 柱状图颜色
bar() 和 barh() 使用关键字 参数 color 来设置 颜色:
x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])
# 允许使用缩写
plt.bar(x,y , color = 'g')
plt.show()
x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])
# 允许使用英文名称
plt.bar(x,y , color = 'hotpink')
plt.show()
x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])
# 允许使用16进制
plt.bar(x,y , color = '#AAAAAA')
plt.show()
3 水平柱状图
bar()中使用关键参数 width 来设置 宽度
x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])
# 允许使用英文名称
plt.bar(x,y , color = 'hotpink' ,width = 0.1)
plt.show()
4 水平柱状图
barh() 中使用关键参数 height 来设置 高度
x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])
# 允许使用英文名称
plt.barh(x,y , color = 'hotpink' , height = 0.1)
plt.show()
5 创建直方图
在Matplotlib中,我们使用hist()函数来创建直方图。
hist()函数将使用一个数字数组来创建直方图,该数组作为参数发送到函数中。
为简单起见,我们使用NumPy随机生成一个包含250个值的数组,其中值将集中在170左右,标准差为10。
import numpy as np
import matplotlib.pyplot as plt
x = np.random.normal(170 , 10, 250)
print(x)
[191.56792062 166.14275988 168.78294321 165.3997756 170.48175877
177.4109901 174.1767904 181.72395358 161.14239965 171.38550415
162.44189031 168.13782994 164.96738762 151.96063898 158.96056716
162.55611076 167.73335544 184.33804849 160.76435293 154.55133105
165.56785115 187.86546033 172.75637394 169.84652567 181.5451724
192.49854544 153.31166062 173.56745868 171.50552598 163.57017105
170.9105257 157.22182681 171.83636915 163.38981828 167.7895021
179.31877069 171.41465742 160.36253906 184.27461057 165.04777639
167.27553506 188.68064824 164.70155733 175.48181953 164.73751076
186.37066108 163.16494778 179.95700029 168.70479141 186.75399458
176.69677952 153.58288652 181.88376946 162.37995667 158.01832936
161.47140047 168.02864358 166.28540507 179.21680325 175.75350782
166.89026568 171.48010507 172.84691232 152.62366065 161.85989881
169.95485247 150.80196151 187.37676049 159.909788 183.62930545
166.07412997 172.4359479 193.49051148 152.08894069 169.55457695
173.0264656 171.30483806 186.80561101 177.07974448 170.49077231
163.04149169 164.22901613 162.37002763 171.42247628 187.14740816
156.91966905 177.67873452 170.08357658 173.51606745 171.51318173
169.78113002 169.61637811 179.91070931 156.36495112 160.95611984
162.75592863 185.25829288 166.51247596 159.20259314 163.88188532
182.4074707 178.89344264 167.36777929 183.92090016 151.42787964
174.14064232 161.58448938 178.92295376 173.88592083 181.66552746
172.00384736 180.82875824 183.65655904 164.80350069 178.16043708
178.59748294 185.3426034 184.67585362 199.78249726 176.53922248
165.94054188 180.8751929 170.18269039 161.10827008 163.10674069
167.09919264 150.0119915 175.05031396 169.03145349 158.31628783
173.29303882 168.49873478 197.09333072 178.91522815 169.55220899
170.63330496 174.0498022 157.23407056 160.01027716 166.52414681
184.31907776 175.48393101 175.6247472 172.06937035 175.76448109
172.3532006 170.97954769 185.71623647 158.07158798 183.82716401
176.12506367 175.10678716 146.64317454 179.7228302 162.31484265
160.4827626 162.71937078 179.2652643 172.34705393 176.05066634
180.58665899 165.6364078 157.82781458 178.32004254 176.72671448
169.78796898 157.00971549 176.61530854 159.68227847 178.20881287
191.39392314 163.794389 168.3484563 167.90355335 165.29881665
185.39374847 191.5272207 171.91711426 173.1715017 175.44668604
170.94867839 175.47075823 184.35080975 157.30536117 167.32784431
174.38240022 185.78149192 180.22212759 165.87173038 164.18501981
176.3316438 174.18088698 160.38913711 164.49215296 169.52528338
180.93611951 165.51331253 181.58510409 177.12310528 154.28624717
160.24255124 173.14851276 182.4086733 171.44135579 181.07096198
177.45306153 174.36049338 163.90357405 175.11722549 177.66089231
159.10890066 160.81497233 172.58921733 168.15011216 182.71037249
176.60268198 164.93633717 172.49403422 164.69892088 194.21432998
153.30400225 163.01639955 163.50106649 175.11183944 170.83309538
175.72058757 164.70519833 153.92624914 172.77643765 179.2153649
177.52851024 185.00723129 177.26410309 164.52002246 159.1376542
173.70832815 165.09984645 162.58248351 158.79328628 188.43832747
169.61983784 161.55234572 165.52058078 172.18625618 165.30494615
168.16325635 165.53914108 164.4788922 168.0920451 172.53501657]
plt.hist(x)
plt.show()
6 创建饼图
pie() 函数绘画饼图
import numpy as np
import matplotlib.pyplot as plt
y = np.array([11,24,66,13])
plt.pie(y)
plt.show()
1 label 标签
使用label参数为饼图添加标签
label参数必须是一个数组,每个扇形都必须有一个标签
y = np.array([33,22,11,55])
ylabels = ['AAA','BBB','CCC','DDD']
plt.pie( y , labels = ylabels)
plt.show()
2 起始角度
如前所述 , 默认起始角度 位于 x 轴 , 但是您可以通过 指定startangle 参数来更改起始的角度
startangle参数 定义为以度的单位的角度 , 默认为 0 度
上 90度 下 270度 左180度 右 0度
y = np.array([33,22,11,55])
ylabels = ['AAA','BBB','CCC','DDD']
plt.pie( y , labels = ylabels , startangle = 90)
plt.show()
3 Explode 突出扇型
每个扇区都是一个参数 , explode输入对象为一个数组 , 里面的每个值都是距离中心的距离
y = np.array([33,22,11,55])
ylabels = ['AAA','BBB','CCC','DDD']
yexplode = [0,0.05,0,0]
plt.pie( y , labels = ylabels , startangle = 90 , explode = yexplode)
plt.show()
4 阴影
通过将shadow参数设置为True为饼图添加阴影:
y = np.array([33,22,11,55])
ylabels = ['AAA','BBB','CCC','DDD']
yexplode = [0,1,0,0]
plt.pie( y , labels = ylabels , startangle = 90 , explode = yexplode , shadow = True)
plt.show()
5 颜色
使用colors参数设置每个楔形的颜色
如果指定了颜色的参数 , 则必须是一个数组 , 每个楔形都有一个值 :
支持:
- 颜色英文
- 英文缩写
- 16进制
y = np.array([33,22,11,55])
ylabels = ['AAA','BBB','CCC','DDD']
yexplode = [0,1,0,0]
ycolors = ['b','g','hotpink','#AA8090']
plt.pie( y , labels = ylabels , startangle = 90 , explode = yexplode , shadow = True , colors = ycolors)
plt.show()
6 图例
要为每个楔形添加解释列表 , 请使用legend()函数:
y = np.array([33,22,11,55])
ylabels = ['AAA','BBB','CCC','DDD']
yexplode = [0,0.05,0,0]
plt.pie( y , labels = ylabels , startangle = 90 , explode = yexplode)
plt.legend()
plt.show()
7 标题的图例
使用legend()函数中加入title即可
y = np.array([33,22,11,55])
ylabels = ['AAA','BBB','CCC','DDD']
yexplode = [0,0.05,0,0]
plt.pie( y , labels = ylabels , startangle = 90 , explode = yexplode)
plt.legend( title = 'SPAKE')
plt.show()