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)
WARNING: 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.


导入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()

png

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()

png

2 无线绘图

仅绘制标记,使用快捷字符串符号参数‘o’,这意味着环或者点

# 绘制两个点 [1,3] [8,10]

plt.plot(xp,yp,'o')
plt.show()

png

3 多点绘制

给出各个洲的数组的内容即可,但是各轴数组的长度和大小相同

xp = np.array([1,4,3,6,5])
yp = np.array([9,8,13,11,9])

plt.plot(xp,yp)
plt.show()

png

4 默认X点

如果我们不指定 x 轴上的点,它们将获得默认值 0,1,2,3(等等,取决于 y 点的长度)。
因此,如果我们采用与上述相同的示例,并省略 x 点,则要求将如下所示:

yp = np.array([9,8,13,11,9])
plt.plot(yp)
plt.show()

png

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()

png

# 使用‘*‘去强调
yp = np.array([3,8,1,10])

plt.plot(yp,marker = '*')
plt.show()

png


1 标记参考

您可以选择以下任何标记:

MarkerDescriptionMarkerDescriptionMarkerDescriptionMarkerDescriptionMarkerDescription
oCircle*Star.Point,PixelxX
XX (filled)+PlusPPlus (filled)sSquareDDiamond
dDiamond (thin)pPentagonHHexagonhHexagonvTriangle Down
^Triangle Up<Triangle Left>Triangle Right1Tri Down2Tri Up
3Tri Left4Tri 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 SyntaxDescriptionColor SyntaxDescriptionColor SyntaxDescriptionColor SyntaxDescription
rRedgGreenbBluecCyan
mMagentayYellowkBlackwWhite

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()

png

png

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()

png

png

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()

png

png

# 使用关键字参数 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()

png

png

# 使用16进制设置颜色的值
plt.plot(yp , marker = 'o' , ms = 20 , mec = '#ACAF50' , mfc = '#AA2456')
plt.show()

png

# 使用颜色英文名称
plt.plot(yp , marker = 'o' , ms = 20 , mec = 'green' , mfc = 'hotpink')
plt.show()

png

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()

png

plt.plot(yp , ls = 'dashed')
plt.show()

png

1 更加简短的语法

linestyle -> ls

dotted -> :

dashed -> --


2 线参考

Line SyntaxDescriptionLine SyntaxDescriptionLine SyntaxDescriptionLine SyntaxDescription
-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()

png

# 使用16进制也行

plt.plot(yp , color = '#AAA999')
plt.show()

png

# 使用英文单词也行

plt.plot(yp , c = 'hotpink')
plt.show()

png

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()

png

png

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()

png

还可以通过在同一 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()

png

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()

png

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()

png

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()

png

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()

png

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()

png

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()

png

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()

png

# 使用 缩写 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()

png

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()

png

# 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()

png

在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()

png

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()

png

# 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()

png

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()

png

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()

png

png

png

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()

png

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()

png

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()

png

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()

png

  • 部分颜色图显示
NameReverseNameReverseNameReverseNameReverseNameReverse
AccentAccent_rBluesBlues_rBrBGBrBG_rBuGnBuGn_rBuPuBuPu_r
CMRmapCMRmap_rDark2Dark2_rGnBuGnBu_rGreensGreens_rGreysGreys_r
OrRdOrRd_rPRGnPRGn_rPairedPaired_rPastel1Pastel1_rPastel2Pastel2_r
PiYGPiYG_rPuBuPuBu_rPuBuGnPuBuGn_rPuOrPuOr_rPuRdPuRd_r
PurplesPurples_rRdBuRdBu_rRdGyRdGy_rRdPuRdPu_rRdYlBuRdYlBu_r
RdYlGnRdYlGn_rRedsReds_rSet1Set1_rSet2Set2_rSet3Set3_r
SpectralSpectral_rWistiaWistia_rYlGnYlGn_rYlGnBuYlGnBu_rYlOrBrYlOrBr_r
YlOrRdYlOrRd_rafmhotafmhot_rautumnautumn_rbinarybinary_rbonebone_r
brgbrg_rbwrbwr_rcividiscividis_rcoolcool_rcoolwarmcoolwarm_r
coppercopper_rcubehelixcubehelix_rflagflag_rgist_earthgist_earth_rgist_graygist_gray_r
gist_heatgist_heat_rgist_ncargist_ncar_rgist_rainbowgist_rainbow_rgist_sterngist_stern_rgist_yarggist_yarg_r
gnuplotgnuplot_rgnuplot2gnuplot2_rgraygray_rhothot_rhsvhsv_r
infernoinferno_rjetjet_rmagmamagma_rnipy_spectralnipy_spectral_roceanocean_r
pinkpink_rplasmaplasma_rprismprism_rrainbowrainbow_rseismicseismic_r
springspring_rsummersummer_rtab10tab10_rtab20tab20_rtab20btab20b_r
tab20ctab20c_rterrainterrain_rtwilighttwilight_rtwilight_shiftedtwilight_shifted_rviridisviridis_r
winterwinter_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()

png

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()

png

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()

png

  • bar() 函数采用描述条形布局的参数。

  • 类别及其值由第一个和第二个参数表示为数组

  • x , y 对象并不是必须为 numpy arry对象

x = ['SPARK','HBASE']
y = [400,300]

plt.bar(x,y)

plt.show()

png

1 水平柱状图

水平显示柱状图 使用 barh()

x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])

plt.barh(x,y)

plt.show()

png

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()

png

x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])

# 允许使用英文名称
plt.bar(x,y , color = 'hotpink')

plt.show()

png

x = np.array(['A','B','C','D'])
y = np.array([3,8,1,10])

# 允许使用16进制
plt.bar(x,y , color = '#AAAAAA')

plt.show()

png

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()

png

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()

png

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()

png

6 创建饼图

pie() 函数绘画饼图

import numpy as np
import matplotlib.pyplot as plt
y = np.array([11,24,66,13])

plt.pie(y)
plt.show()

png

1 label 标签

使用label参数为饼图添加标签

label参数必须是一个数组,每个扇形都必须有一个标签

y = np.array([33,22,11,55])
ylabels = ['AAA','BBB','CCC','DDD']

plt.pie( y , labels = ylabels)
plt.show()

png

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()

png

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()

png

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()

png

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()

png

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()

png

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()

png