快速上手Python三剑客--Matplotlib篇

MatPlotlib学习

什么是Matplotlib?

  • Matplotlib是Python中的图形绘图库,可用作可视化实用程序
  • Matplotlib大部分是用Python编写的,为了平台的兼容性,少部分是用C、Object-C和JavaScript编写的

Matplotlib代码库在哪里?

Matplotlib的源代码位于Github存储库
https://github.com/matplotlib/matplotlib

# 引入Matplotlib
import matplotlib

基础知识

PyPlot

大多数Matplotlib实用程序位于Pyplot子模块下,通常以plt别名导入:

import numpy as np
# 导入Pyplot
import matplotlib.pyplot as plt
# 在图中从位置(0,0)到位置(6,250)画一条线:
xpoints = np.array([0, 6])
ypoints = np.array([0, 250])

plt.plot(xpoints, ypoints)
plt.show()

快速上手Python三剑客--Matplotlib篇_第1张图片

绘图

绘制x和y点

plot()函数用于在图表中绘制点(标记)
默认情况下,plot()函数从点到点绘制一条线
该函数采用参数来指定图中的点
参数1是一个包含在x轴上的点的数组
参数2是一个包含在y轴上的点的数组
如果我们需要绘制一条从(1,3)到(8,10)的线,我们必须将两个数组[1,8]和[3,10]传递给plot()函数

# 在图中从位置(1,3)到位置(8,10)画一条线:
xpoints = np.array([1, 8])
ypoints = np.array([3, 10])

plt.plot(xpoints, ypoints)
plt.show()

快速上手Python三剑客--Matplotlib篇_第2张图片

无线绘图

仅绘制标记,您可以使用快捷字符串符号参数"o",这意味着“环”,具体参考格式化字符串fmt

# 在图中绘制点(1,3)(8,10)
plt.plot(xpoints, ypoints, 'o')
plt.show()

快速上手Python三剑客--Matplotlib篇_第3张图片

多点

您可以根据需要绘制任意数量的点,只需保证两个轴上的点数相同即可

# 在图中画一条线,从位置(1,3)到(2,8)然后到(6,1)最后到位置(8,10)
xpoints = np.array([1, 2, 6, 8])
ypoints = np.array([3, 8, 1, 10])

plt.plot(xpoints, ypoints)
plt.show()

快速上手Python三剑客--Matplotlib篇_第4张图片

默认X点

如果我们不指定x轴上的点,它们将获得默认值0,1,2,3等等,取决于y点的长度

ypoints = np.array([3, 8, 1, 10, 5, 7])

plt.plot(ypoints)
plt.show()

快速上手Python三剑客--Matplotlib篇_第5张图片

有关标记

标记

您可以使用关键字参数marker,用指定的标记强调每个点

ypoints = np.array([3, 8, 1, 10, 5, 7])

plt.plot(ypoints, marker='o')
plt.show()

快速上手Python三剑客--Matplotlib篇_第6张图片

# 用星星标记每个点
plt.plot(ypoints, marker='*')
plt.show()

快速上手Python三剑客--Matplotlib篇_第7张图片

标记参考

您可以选择以下任何标记

Marker Description Marker Description Marker Description Marker Description Marker Description Marker Description
‘o’ 实心圆 ‘*’ 星星 ‘.’ ‘,’ 像素点 ‘x’ 乘号 ‘X’ 乘号(填充)
‘+’ 加号 ‘P’ 加号(填充) ‘s’ 正方形 ‘D’ 菱形 ‘d’ 瘦菱形 ‘p’ 五边形
‘H’ 六边形(尖朝左) ‘h’ 六边形(尖朝上) ‘v’ 下三角 ‘^’ 上三角 ‘<’ 左三角 ‘>’ 右三角
‘1’ 下三叉 ‘2’ 上三叉 ‘3’ 左三叉 ‘4’ 右三叉 ‘|’ 竖线 ‘_’ 横线

标记尺寸

您可以使用关键字参数markersize或ms来设置标记的大小

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, marker='o', ms=20)
plt.show()

快速上手Python三剑客--Matplotlib篇_第8张图片

颜色参考

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

标记颜色

ypoints = np.array([3, 8, 1, 10])

# 使用关键字参数,markeredgecolor或mec来设置标记边缘的颜色
plt.plot(ypoints, marker='o', ms=20, mec='r')
plt.show()

快速上手Python三剑客--Matplotlib篇_第9张图片

ypoints = np.array([3, 8, 1, 10])

# 关键字参数 markerfacecolor或mfc来设置标记边缘内的颜色
plt.plot(ypoints, marker='o', ms=20, mfc='r')
plt.show()

快速上手Python三剑客--Matplotlib篇_第10张图片

ypoints = np.array([3, 8, 1, 10])

# 设置标记整体的颜色
plt.plot(ypoints, marker='o', ms=20, mec='r', mfc='r')
plt.show()

快速上手Python三剑客--Matplotlib篇_第11张图片

ypoints = np.array([3, 8, 1, 10])

# 您还可以使用十六进制颜色值
plt.plot(ypoints, marker='o', ms=20, mec='#4CAF5C', mfc='#4CAF5C')
plt.show()

快速上手Python三剑客--Matplotlib篇_第12张图片

ypoints = np.array([3, 8, 1, 10])

# 140种支持的颜色名称中的任何一种
plt.plot(ypoints, marker='o', ms=20, mec='hotpink', mfc='hotpink')
plt.show()

快速上手Python三剑客--Matplotlib篇_第13张图片

格式化字符串fmt

您还可以使用快捷字符串符号参数来指定标记
此参数也称为fmt,使用以下语法编写
marker|line|color
线条参数line参考下面

ypoints = np.array([3, 8, 1, 10])
# o代表实心圆  :代表点虚线  r代表红色
plt.plot(ypoints, 'o:r')
plt.show()

快速上手Python三剑客--Matplotlib篇_第14张图片

线条

线参考

Type Line Syntax Description
‘solid’ (默认) ‘-’ 实线
‘dotted’ ‘:’ 点虚线
‘dashed’ ‘–’ 破折线
‘dashdot’ ‘-.’ 点划线
‘None’ ‘’ 或 ’ ’ 不画线

线型

您可以使用关键字参数 linestyle 或 ls 来更改绘制线的样式

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, linestyle='dotted')
plt.show()

快速上手Python三剑客--Matplotlib篇_第15张图片

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

快速上手Python三剑客--Matplotlib篇_第16张图片

更短的语法

线条的样式可以用更短的语法编写
linestyle可以写成ls
dotted可以写成:
dashed可以写成–

plt.plot(ypoints, ls=':')
plt.show()

快速上手Python三剑客--Matplotlib篇_第17张图片

线条颜色

使用关键字参数color或c来设置线条的颜色

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, color='b')
plt.show()

快速上手Python三剑客--Matplotlib篇_第18张图片

# 您还可以使用十六进制颜色值
plt.plot(ypoints, c='#4CAF50')
plt.show()

快速上手Python三剑客--Matplotlib篇_第19张图片

# 140种支持的颜色名称中的任何一种
plt.plot(ypoints, c='hotpink')
plt.show()

快速上手Python三剑客--Matplotlib篇_第20张图片

线宽度

可以使用关键字参数 linewidth或lw 来更改线条的宽度
该值是一个浮点数,以磅为单位

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, linewidth='20.5')
plt.show()

快速上手Python三剑客--Matplotlib篇_第21张图片

多行

通过简单地添加更多plt.plot()函数来绘制任意数量的线

y1 = np.array([3, 8, 1, 10])
y2 = np.array([6, 2, 7, 11])

plt.plot(y1)
plt.plot(y2)
plt.show()

快速上手Python三剑客--Matplotlib篇_第22张图片

还可以通过在同一plt.plot()函数中为每条线添加x轴和y轴的点来绘制多条线
(在上面的例子中,我们只指定了y轴上的点,这意味着x轴上的点得到了默认值(0,1,2,3))
x和y值成对出现

x1 = np.array([0, 1, 2, 3])
y1 = np.array([3, 8, 1, 10])
x2 = np.array([0, 1, 2, 3])
y2 = np.array([6, 2, 7, 11])

plt.plot(x1, y1, x2, y2)
plt.show()

快速上手Python三剑客--Matplotlib篇_第23张图片

标签

为绘图创建标签和标题

使用PyPlot

  • 可以使用xlabel()和ylabel()函数为x轴和y轴设置标签
  • 可以使用title()函数为绘图设置标题
# 解决Matplotlib 中文显示问题
matplotlib.rcParams['font.sans-serif'] = ['KaiTi']
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.title("运动手表数据")
# 设置标签
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt.show()

快速上手Python三剑客--Matplotlib篇_第24张图片

设置标题和标签的字体属性

使用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])

font1 = {'family': 'KaiTi', 'color': 'blue', 'size': 20}
font2 = {'family': 'KaiTi', 'color': 'darkred', 'size': 15}

plt.plot(x, y)
plt.title("运动手表数据", fontdict=font1)
plt.xlabel("平均脉搏", fontdict=font2)
plt.ylabel("卡路里消耗量", fontdict=font2)
plt.show()

快速上手Python三剑客--Matplotlib篇_第25张图片

设置标题位置

使用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)
plt.title("运动手表数据", loc='left')
plt.xlabel("平均脉搏")
plt.ylabel("卡路里消耗量")
plt.show()

快速上手Python三剑客--Matplotlib篇_第26张图片

网格

向绘图中添加网格线

使用PyPlot,使用grid()函数将网格线添加到绘图中

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

font1 = {'family': 'KaiTi', 'color': 'blue', 'size': 20}
font2 = {'family': 'KaiTi', 'color': 'darkred', 'size': 15}

plt.plot(x, y)
plt.title("运动手表数据", fontdict=font1)
plt.xlabel("平均脉搏", fontdict=font2)
plt.ylabel("卡路里消耗量", fontdict=font2)
# 添加网格线
plt.grid()
plt.show()

快速上手Python三剑客--Matplotlib篇_第27张图片

指定要显示的网格线

使用grid()函数中的axis(轴)参数来指定要显示的网格线
合法值为:“x”、“y"和"both”,默认值为"both"

  • "x"表示垂直x轴的线
  • "y"表示垂直y轴的线
  • "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])

font1 = {'family': 'KaiTi', 'color': 'blue', 'size': 20}
font2 = {'family': 'KaiTi', 'color': 'darkred', 'size': 15}

plt.plot(x, y)
plt.title("运动手表数据", fontdict=font1)
plt.xlabel("平均脉搏", fontdict=font2)
plt.ylabel("卡路里消耗量", fontdict=font2)
# 只显示垂直x轴的网格线
plt.grid(axis='x')
plt.show()

快速上手Python三剑客--Matplotlib篇_第28张图片

设置网格的线属性

可以设置网格的线条属性,如下所示:grid(color = ‘color’,linestyle = ‘linestyle’,linewidth = number)

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

font1 = {'family': 'KaiTi', 'color': 'blue', 'size': 20}
font2 = {'family': 'KaiTi', 'color': 'darkred', 'size': 15}

plt.plot(x, y)
plt.title("运动手表数据", fontdict=font1)
plt.xlabel("平均脉搏", fontdict=font2)
plt.ylabel("卡路里消耗量", fontdict=font2)
# 设置网格线条颜色为绿色,虚线,线宽为1.5
plt.grid(color='green', linestyle='--', linewidth=1.5)
plt.show()

快速上手Python三剑客--Matplotlib篇_第29张图片

多图

显示多个图

我们可以使用 PyPlot 中的 subplot()方法来绘制多个子图
subplot()函数采用三个参数来描述图形的布局
布局按行和列组织,由第一个和第二个参数表示,第三个参数表示当前绘图的索引
如果我们想要一个1行2列的图形(这意味着两个图将并排显示而不是垂直显示)

  • subplot(1,2,1)表示区域为1行2列,第一个图(左上)
  • subplot(1,2,1)表示区域为1行2列,第二个图(右上)
# plot1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])

plt.subplot(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)

plt.plot(x, y)
plt.show()

快速上手Python三剑客--Matplotlib篇_第30张图片

标题

使用title()函数为每个图添加标题

# plot1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])

plt.subplot(1, 2, 1)
plt.plot(x, y)
plt.title("SALES")

# plot2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])

plt.subplot(1, 2, 2)
plt.plot(x, y)
plt.title("INCOME")

plt.show()

快速上手Python三剑客--Matplotlib篇_第31张图片

超级标题

可以使用suptitle()函数为整个图形添加标题

# plot1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])

plt.subplot(1, 2, 1)
plt.plot(x, y)
plt.title("SALES")

# plot2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])

plt.subplot(1, 2, 2)
plt.plot(x, y)
plt.title("INCOME")

plt.suptitle("MY SHOP")
plt.show()

快速上手Python三剑客--Matplotlib篇_第32张图片

散点图

创建散点图

借助PyPlot,可以使用scatter()函数绘制散点图
它需要两个长度相同的数组,一个用于x轴的值,另一个用于y轴上的值

x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

plt.scatter(x, y)
plt.show()

快速上手Python三剑客--Matplotlib篇_第33张图片

颜色

使用color或c参数为每个散点图设置自己的颜色

x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
plt.scatter(x, y, color='hotpink')

x = np.array([2, 2, 8, 1, 15, 8, 12, 9, 7, 3, 11, 4, 7, 14, 12])
y = np.array([100, 105, 84, 105, 90, 99, 90, 95, 94, 100, 79, 112, 91, 80, 85])
plt.scatter(x, y, color='#88C999')

plt.show()

快速上手Python三剑客--Matplotlib篇_第34张图片

为每个点上色

可以通过使用颜色数组作为c参数的值来为每个点设置特定的颜色
此处不能使用color参数,只能使用c参数

x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
colors = [
    'red', 'blue', 'green', 'grey', 'yellow', 'pink', 'black', 'orange',
    'purple', 'beige', 'cyan', 'brown', 'pink'
]
plt.scatter(x, y, c=colors)
plt.show()

快速上手Python三剑客--Matplotlib篇_第35张图片

颜色图

Matplotlib模块有许多可用的颜色图
颜色图就像一个颜色列表,其中每种颜色都有一个范围从0到100的值
下面是一个颜色条的例子:
在这里插入图片描述

设置颜色条需要使用 cmap 参数,默认值为 ‘viridis’,之后颜色值设置为 0 到 100 的数组。

如何使用颜色图

可以使用带有颜色图值的关键字参数cmap指定颜色图,在本例中为"viridis",它是Matplotlib中可用的内置颜色图之一
此外,必须创建一个包含值(从0到100)的数组,散点图中的每个点都有一个值

# 通过plt.colorbar()语句在绘图中包含颜色图
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()

快速上手Python三剑客--Matplotlib篇_第36张图片

可用的颜色图

可以选择的内置颜色图

颜色名称 保留关键字 颜色名称 保留关键字 颜色名称 保留关键字 颜色名称 保留关键字
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_ Oranges Oranges_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
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_rv terrain terrain_r twilight twilight_r twilight_shifted twilight_shifted_r
viridis viridis_r winter winter_r

尺寸

使用s参数更改点的大小
就像颜色一样,确保尺寸大小数组的长度与x和y轴的长度相同

x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, s=sizes)
plt.show()

快速上手Python三剑客--Matplotlib篇_第37张图片

透明度

可以使用alpha参数调整点的透明度
就像颜色一样,确保透明度大小数组的长度与x和y轴的数组长度相同

x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 95, 10, 300, 600, 800, 70])

plt.scatter(x, y, s=sizes, alpha=0.5)
plt.show()

快速上手Python三剑客--Matplotlib篇_第38张图片

组合颜色、大小和透明度

在点上组合具有不同大小的颜色图

x = np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100))
sizes = 10 * np.random.randint(100, size=(100))
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral')
plt.colorbar()
plt.show()

快速上手Python三剑客--Matplotlib篇_第39张图片

柱状图

创建柱状图

在PyPlot中,使用bar()函数绘制柱状图
bar()函数采用描述条形布局的参数
类别及其值由第一个和第二个参数表示为数组

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

plt.bar(x, y)
plt.show()

快速上手Python三剑客--Matplotlib篇_第40张图片

水平柱状图

如果柱状水平显示而不是垂直显示,请使用barh()函数

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

plt.barh(x, y)
plt.show()

快速上手Python三剑客--Matplotlib篇_第41张图片

柱状图颜色

bar()和barh()函数都可以使用关键字参数color来设置颜色
color的值可以是

  • 颜色简写
  • 十六进制颜色值
  • 140种支持的颜色名称中的任何一种
x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])

plt.bar(x, y, color="r")
plt.show()

快速上手Python三剑客--Matplotlib篇_第42张图片

条形宽度

bar()使用关键字参数width来设置宽度

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

plt.bar(x, y, width=0.1)
plt.show()

快速上手Python三剑客--Matplotlib篇_第43张图片

条形高度

barh()使用关键字参数height来设置条形的高度

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

plt.barh(x, y, height=0.1)
plt.show()

快速上手Python三剑客--Matplotlib篇_第44张图片

直方图

在Matplotlib中,我们使用hist()函数来创建直方图
hist()函数将使用一个数字数组来创建直方图,该数组作为参数发送到函数中
为简单起见,我们使用NumPy随机生成一个包含250个值的数组,其中值将集中在170左右,标准差为10

x = np.random.normal(170, 10, 250)
print(x)
[172.83224577 166.59215173 164.42783259 158.15990985 171.4167824
 184.57482644 156.98938481 168.53672758 173.32800612 168.85310644
 177.31120323 178.733422   146.59130748 162.92016988 182.5350214
 173.31881646 170.59270029 172.44498539 172.0818382  168.0687817
 186.92884321 167.89541457 169.50370351 179.91946522 185.40477377
 173.71603205 169.22000391 172.94558761 174.68060389 170.18619384
 175.95926736 165.27644425 173.38878524 149.32676714 167.42052427
 155.73761424 178.19474856 150.67061647 160.16266619 174.64562254
 160.19218237 171.61117197 172.79584472 169.68835154 174.83206491
 182.26657115 162.938066   186.12354658 159.63770203 173.51259846
 162.19645476 170.9687639  156.56690294 177.61289237 157.06048109
 190.37404146 168.13746134 187.81537228 186.86255287 157.72470211
 159.77839483 163.02225651 179.26660458 159.17354417 164.55553479
 171.94656274 167.96423807 159.94908256 167.4269312  169.73016624
 184.88986031 161.84504375 157.4431235  172.7313438  158.84340485
 184.46983136 174.22695449 155.22521322 161.73079279 181.40647818
 155.6597359  157.66961199 186.10916515 166.51010671 140.57502902
 175.34308478 166.10613828 179.98179552 160.47496638 182.97245337
 152.32166421 141.88685382 149.55276237 165.49862886 163.77125887
 159.20026397 181.29018303 180.23719619 166.02913142 153.32825493
 171.9421416  191.87109134 176.49893928 175.70191298 169.72779281
 153.52708587 181.8700642  165.56766196 158.99149939 158.14523649
 165.1961903  176.52367929 178.21595603 152.78410602 164.60530652
 161.37801084 164.97723028 161.98405132 173.63083952 159.05235693
 167.02157156 173.76409227 168.80263496 171.49566963 179.81651124
 175.78504952 172.92131064 173.75211622 162.16084894 174.48409587
 160.79427524 185.98295779 169.34401713 153.65064701 159.78857688
 163.57108265 166.64868653 173.96476028 180.410143   157.76743793
 174.99384223 180.68159861 177.97373969 184.6569523  176.63813497
 164.05601525 175.33049318 161.21527901 152.95256863 166.82936466
 174.41298249 180.55369213 167.26562753 157.78684301 176.28166843
 176.44871051 154.47716717 164.25345375 171.94701146 173.75149999
 159.61101834 166.73570752 179.27713404 166.11670139 171.24827797
 173.24021301 165.40305297 197.58474554 171.29050346 161.37131937
 162.10937024 157.51452579 149.32869376 149.97761306 164.96286299
 163.84986317 185.77587332 178.24924509 160.71988489 179.9909164
 169.08774133 182.20092214 162.85630435 176.78953518 170.10830753
 163.3481756  183.17645321 170.17549032 165.71707045 169.26393508
 155.05835842 161.01172235 174.90867655 198.72369427 167.8667804
 160.88220225 165.34701674 165.15181926 171.77587939 181.29050326
 177.80530234 185.75607082 155.53005021 176.22913679 161.10302988
 173.47924139 180.1322566  181.42245649 166.84376524 160.04378756
 179.87304132 161.68832374 155.44256153 179.70846811 164.13880512
 163.07319623 163.52101022 162.07436664 174.55311474 167.5814016
 194.56357985 171.11114409 158.35486494 151.16473348 163.9213877
 175.94531648 157.2860032  157.60653633 162.42891378 180.72294803
 172.55980031 171.11474768 157.20553376 163.55258661 159.04889303
 179.43443798 158.2798769  172.15969538 158.77737181 154.96652073
 156.81755951 177.65290796 182.19718867 176.57004163 161.30487197
 149.386414   178.86074604 161.55593962 164.02007432 170.9858288 ]
plt.hist(x)
plt.show()

快速上手Python三剑客--Matplotlib篇_第45张图片

饼图

创建饼图

在PyPlot中,可以使用pie()函数绘制饼图

y = np.array([35, 25, 25, 15])

plt.pie(y)
plt.show()

快速上手Python三剑客--Matplotlib篇_第46张图片

标签

使用label参数为饼图添加标签
label参数必须是一个数组,每个楔形都有一个标签

y = np.array([35, 25, 25, 15])
mylabels = ['Apples', 'Bananas', 'Cherries', 'Oranges']

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

快速上手Python三剑客--Matplotlib篇_第47张图片

起始角度

如前所述,默认起始角度位于x轴,但您可以通过指定startangle参数来更改起始角度
startangle参数定义为以度为单位的角度,默认角度为0
快速上手Python三剑客--Matplotlib篇_第48张图片

y = np.array([35, 25, 25, 15])
mylabels = ['Apples', 'Bananas', 'Cherries', 'Oranges']

plt.pie(y, labels=mylabels, startangle=90)
plt.show()

快速上手Python三剑客--Matplotlib篇_第49张图片

Explode

也许你想让其中一个楔形脱颖而出?explode参数允许您这样做
如果指定了explode参数,而不是None,则必须是一个数组,每个楔形都有一个值
每个值表示每个楔形显示的距离中心多远

y = np.array([35, 25, 25, 15])
mylabels = ['Apples', 'Bananas', 'Cherries', 'Oranges']
myexplode = [0.2, 0, 0, 0]

plt.pie(y, labels=mylabels, explode=myexplode)
plt.show()

快速上手Python三剑客--Matplotlib篇_第50张图片

阴影

通过将shadow参数设置为True为饼图添加阴影

y = np.array([35, 25, 25, 15])
mylabels = ['Apples', 'Bananas', 'Cherries', 'Oranges']
myexplode = [0.2, 0, 0, 0]

plt.pie(y, labels=mylabels, explode=myexplode, shadow=True)
plt.show()

快速上手Python三剑客--Matplotlib篇_第51张图片

颜色

使用colors参数设置每个楔形的颜色
如果指定了颜色参数,则必须是一个数组,每个楔形都有一个值
colors参数值可以为

  • 颜色简写
  • 十六进制颜色值
  • 140种支持的颜色名称中的任何一种
y = np.array([35, 25, 25, 15])
mylabels = ['Apples', 'Bananas', 'Cherries', 'Oranges']
myexplode = [0.2, 0, 0, 0]
mycolor = ['black', 'hotpink', 'b', '#4CAF5C']

plt.pie(y, labels=mylabels, explode=myexplode, shadow=True, colors=mycolor)
plt.show()

快速上手Python三剑客--Matplotlib篇_第52张图片

图例

要为每个楔形添加解释列表,请使用legend()函数

y = np.array([35, 25, 25, 15])
mylabels = ['Apples', 'Bananas', 'Cherries', 'Oranges']
myexplode = [0.2, 0, 0, 0]

plt.pie(y, labels=mylabels, explode=myexplode, shadow=True)
plt.legend()
plt.show()

快速上手Python三剑客--Matplotlib篇_第53张图片

带标题的图例

要向图例添加标题,可通过关键字参数title='title’设置并将标题参数传递给图例函数

y = np.array([35, 25, 25, 15])
mylabels = ['Apples', 'Bananas', 'Cherries', 'Oranges']
myexplode = [0.2, 0, 0, 0]

plt.pie(y, labels=mylabels, explode=myexplode, shadow=True)
plt.legend(title='Four Fruits')
plt.show()

快速上手Python三剑客--Matplotlib篇_第54张图片

更详细教程可关注
https://www.runoob.com/matplotlib/matplotlib-tutorial.html

Congratulations!

记录者:ZL-Qin

你可能感兴趣的:(快速上手Python三剑客,Python,python,matplotlib)