栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

matplotlib

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

matplotlib

Matplotlib概述

Matplotlib 是 Python 的绘图库,可以用来绘制各种静态,动态,交互式图表,并且提供多样化的输出格式。并且可根据Numpy的ndarray数组绘制2D(3D)图形。

Matplotlib安装
pip install matplotlib
pip install matplotlib -i https://pypi.douban.com/simple/

获取当前版本

import matplotlib
print(matplotlib.__version__)
Pyplot

Pyplot 是 Matplotlib 的子库,是常用的绘图模块,能很方便让用户绘制 2D 图表。

Pyplot 加载

# 加载方式1
import matplotlib.pyplot as plt

# 加载方式2
from matplotlib import pyplot as plt

绘制第一个图形

import matplotlib.pyplot as plt
import numpy as np

# 定义绘图所需要的坐标点
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

# 通过两个坐标 (0,0) 到 (6,100) 来绘制一条线,并进行可视化展示
plt.plot(xpoints, ypoints)
plt.show()
折线图

Matplotlib采用plot()函数绘制

plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
参数说明
xx轴对应的数据,若省略使用默认值 0,1,…,N
yy轴对应的数据
fmt折线样式设置 ‘[marker][color][line]’
alpha折线透明度,范围0~1
基础绘制

根据y轴数据绘制折线图

import matplotlib.pyplot as plt
import numpy as np

# 定义绘图所需要的坐标点
y_values = np.array([5, 6, 8, 1, 3, 5, 8, 0, 3, 3, 8])

# 根据y轴数据绘制折线图,当x轴数据省略时,x轴数据采用默认值 0,1,...,N
plt.plot(y_values)
plt.show()

根据x轴/y轴数据绘制折线图

import matplotlib.pyplot as plt
import numpy as np

# 定义绘图所需要的坐标点
x_values = np.arange(10)
y_values = np.random.randint(2, 20, size=10)

# 通过两个坐标轴数据来绘制一条折线,此时x轴和y轴数据个数要保持一致
plt.plot(x_values, y_values)
plt.show()

复合折线

import matplotlib.pyplot as plt
import numpy as np

# 两条曲线共用x轴
x = np.arange(-10, 11)
y1 = x ** 2
y2 = x

# 若一幅图中包含多条曲线,则一次列出每条曲线的x轴数据和y轴数据
plt.plot(x, y1, x, y2)
plt.show()
颜色样式

Matplotlib折线颜色通过color属性指定,颜色取值可以是颜色英文单词、十六进制颜色、也可以是颜色字符。

颜色字符描述
‘b’蓝色
‘r’红色
‘g’绿色
‘y’黄色
‘k’黑色
‘w’白色
‘m’洋红色
‘c’青绿色
’#rrggbb’十六进制颜色字符串
red颜色英文单词
import matplotlib.pyplot as plt
import numpy as np

# 定义绘图所需要的坐标点
x_values = np.arange(10)
y_values = np.random.randint(2, 20, size=10)

# 通过color属性指定折线颜色,以下三种方法任选其一
plt.plot(x_values, y_values, color='g')
# plt.plot(x_values, y_values, color='green')
# plt.plot(x_values, y_values, color='#00ff00')

plt.show()

color属性的简写形式为c,color='g’与c='g’是等价的,开发中推荐使用简写形式

折线样式
属性描述
linestyle | ls折线类型
linewidth | lw折线宽度,float数值

折线类型

线型字符描述
‘‐’实线
‘‐‐’破折线
‘‐.’点划线
‘:’虚线
import matplotlib.pyplot as plt
import numpy as np

# 定义绘图所需要的坐标点
x_values = np.arange(10)
y_values = np.random.randint(2, 20, size=10)

# linestyle属性指定了折线的表现形式,linewidth指定了折线的宽度。以下两种写法任选其一
plt.plot(x_values, y_values, ls='--', lw=3)
# plt.plot(x_values, y_values, linestyle='--', linewidth=3)

plt.show()
标记样式

Matplotlib通过marker以及附属属性对折线标记的类型、大小、颜色进行设置。

属性描述
marker标记类型
markersize | ms标记的大小
markerfacecolor | mfc标记内部的颜色
markeredgecolor | mec标记边框的颜色
markeredgewidth | mew标记边框的宽度

标记类型

样式字符描述
‘.’点标记
‘,’像素标记
‘o’圆形标记
‘v’三角向下标记
‘^’三角向上标记
‘<’三角向左标记
‘>’三角向右标记
‘s’方形标记
‘p’五边形标记
‘*’星号标记
‘h’六边形标记
‘H’加粗六边形标记
‘+’加号标记
‘P’加号标记(填充)
‘x’乘号 x
‘X’乘号 x(填充)
‘D’加粗菱形标记
‘d’菱形标记
‘|’|标记
‘_’下划线标记
‘1’下三叉
‘2’上三叉
‘3’左三叉
‘4’右三叉
‘8’八角形
import matplotlib.pyplot as plt
import numpy as np

# 通过numpy定义绘图所需要的数据
x_values = np.array([1, 2, 3])
y_values = np.array([1, 2, 3])

# marker属性指定标记类型
plt.plot(x_values, y_values, marker="s")
plt.show()

标记颜色、大小设置

import matplotlib.pyplot as plt
import numpy as np

# 定义绘图所需要的坐标点
x_values = np.array([1, 2, 3])
y_values = np.array([1, 2, 3])

'''
  markersize:设置标记大小, 通常简写为ms
  markerfacecolor:设置标记内部颜色, 通常简写为mfc
  markeredgecolor:设置标记边线颜色, 通常简写为mec
  markeredgewidth:设置标记边线宽度, 通常简写为mew
'''
# 以下两种写法等价,开发中推荐使用简写形式
plt.plot(x_values, y_values, marker="o",
         ms=20,
         mfc='red',
         mec='green',
         mew=4
         )

# plt.plot(x_values, y_values, marker="o",
#          markersize=20,
#          markerfacecolor='red',
#          markeredgecolor='green',
#          markeredgewidth=4
#          )
plt.show()

样式简写

# 折线的颜色、折线样式、标记样式可以连写 [marker][line][color],并且三者的顺序可以随意调换

import matplotlib.pyplot as plt
import numpy as np

# 定义绘图所需要的坐标点
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

# 通过两个坐标 (0,0) 到 (6,100) 来绘制一条线,并进行可视化展示
plt.plot(xpoints, ypoints, 'o-g')
plt.show()
标签样式
函数描述
title()设置标题
xlabel()设置x轴标题
ylabel()设置y轴标题
loc()设置标题和坐标轴标题位置
import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.arange(-10, 11)
y = x ** 2

# title()函数用于设置标题
plt.title("y = x ^ 2",fontsize=12)

# xlabel()与ylabel()用于设置轴标题
plt.xlabel("x - label")
plt.ylabel("y - label")

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

中文乱码解决

Matplotlib默认不支持中文,可以通过下列语句查询系统支持的字体,选择并设置字体达到解决中文乱码问题。

import matplotlib
from matplotlib import pyplot as plt

# 打印Matplotlib自带的字体
font_list = [f.name for f in matplotlib.font_manager.fontManager.ttflist]
print(font_list)

设置字体

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-10, 11)
y = x ** 2

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

plt.title("y=x^2图形可视化")
plt.xlabel("x - label")
plt.ylabel("y - label")

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PgyW90jv-1654067119123)(matplotlib.assets/image-20220514235410579.png)]

文本位置

'''
  title:loc参数设置标题显示的位置,可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。
  xlabel():loc参数来设置x轴显示的位置,可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。
  ylabel():loc参数来设置y轴显示的位置,可以设置为: 'bottom', 'top', 和 'center', 默认值为 'center'。
'''
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-10, 11)
y = x ** 2

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

# loc()设置了文本的对齐方式
plt.title("y=x^2图形可视化", loc='center')
plt.xlabel("x - label", loc='right')
plt.ylabel("y - label", loc='top')

plt.plot(x, y)
plt.show()
网格线

使用 pyplot 中的 grid() 方法来设置图表中的网格线。

plt.grid(b=None, which='major', axis='both',**kwargs)
属性描述
b是否显示网格线(True|False),默认True
which网格线刻度(major|minor|both),默认both
axis设置网格线方向(x|y|both),默认both
color网格线颜色
linestyle | ls网格线样式(‘‐’, ‘–’, ‘-.’, ‘:’)
linewidth | lw网格线宽度(数值)

基本网格设置

import numpy as np
import matplotlib.pyplot as plt

# 准备数据
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

# 设置标题与坐标轴文本
plt.title("grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")

plt.grid() # 设置网格

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

网格线综合实例

import numpy as np
import matplotlib.pyplot as plt

# 准备数据
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

# 设置标题与坐标轴文本
plt.title("grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")

# 设置网格
plt.grid(color='r', linestyle='--', linewidth=0.5)  

plt.plot(x, y)
plt.show()
刻度与范围

设置坐标轴数值范围

import matplotlib.pyplot as plt
import numpy as np

# 两条曲线共用x轴
x = np.arange(-10, 11)
y1 = x ** 2
y2 = x

# 若一幅图中包含多条曲线,则一次列出每条曲线的x轴数据和y轴数据
plt.plot(x, y1, x, y2)

plt.axis(xmin=0, xmax=10, ymin=0, ymax=80) # 设置坐标轴数值范围(方式1)
# plt.axis([0, 10, 0, 80]) # 设置坐标轴数值范围(方式2)
# 设置坐标轴数值范围(方式3)
# plt.xlim(xmin=0.0,xmax=10)
# plt.ylim(ymin=0, ymax=80)

plt.show()

设置范围的语句要在plot()语句之后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRVX0ZKB-1654067119130)(matplotlib.assets/image-20220515160906219.png)]

刻度设置

刻度设置用于设置坐标轴刻度标记显示的范围、密度、颜色等

xticks(ticks=None, labels=None, **kwargs)
xticks(ticks=None, labels=None, **kwargs)
属性描述
ticks指定标注位置
labels指定标注内容
rotation刻度旋转角度
color刻度颜色

刻度基本操作

import matplotlib.pyplot as plt

# 准备数据
x = range(1, 13)
y = [1, 3, 9, 12, 15, 23, 34, 31, 23, 28, 27, 30]

plt.xticks(x) # 设置x轴标记(图1)
# 以下两种写法等价
# plt.xticks(range(1,len(x),2)) # 按间隔设置x轴标记(图2)
# plt.xticks([x[i] for i in range(0,len(x),2)]) # 按间隔设置x轴标记(图2)

plt.plot(x, y, 'o-b')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJVWpVCg-1654067119132)(matplotlib.assets/image-20220515174406527.png)]

自定义刻度

from matplotlib import pyplot as plt

x = range(1, 13)
y = [1, 3, 9, 12, 15, 23, 34, 31, 23, 28, 27, 30]

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

x_labels = [r"{}月".format(val) for val in x]
plt.xticks(x, labels=x_labels, rotation=45)  # rotation表示旋转的角度

plt.plot(x, y, 'o-b')
plt.show()
图例设置
import random
from matplotlib import pyplot as plt

x = range(1, 13)
y1 = [1, 3, 9, 12, 15, 23, 34, 31, 23, 28, 27, 30]
y2 = [3, 2, 12, 21, 23, 4, 32, 30, 28, 18, 21, 31]

# 以下两句解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.xticks(x, ['{}月'.format(i) for i in x])
plt.ylabel('销售额(万)')  # y轴标题
plt.title('每月销售额')  # 图片标题

# 绘制网格 (alpha设置透明度,也可以设置网格线的样式)
plt.grid(alpha=0.4)

# label属性指定图例
plt.plot(x, y1, color='red', label='小明')
plt.plot(x, y2, color='blue', label='小方')

# 添加图例
# 设置位置loc: upper left、lower left、center left、upper center
plt.legend(loc='upper left')

plt.show()

图例设置语句legend()要在绘图语句plot()之后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ap0ZDLJs-1654067119134)(matplotlib.assets/image-20220525105218626.png)]

绘制子图

Matplotlib使用 pyplot 中的 subplot() 方法来绘制多个子图。

'''
  subplot(nrows, ncols, index, **kwargs)
  subplot把绘图区域分为nrows行ncols列,index确定子图的序号进行绘图
'''
import matplotlib.pyplot as plt
import numpy as np

# plot 1:
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.subplot(1, 2, 1)
plt.plot(xpoints, ypoints, 'o-g')
plt.title("plot 1")

# plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(1, 2, 2)
plt.plot(x, y, 'o--r')
# annotate()用于在指定位置标记文本
plt.annotate('4', (1.8, 4)) 
plt.title("plot 2")

plt.suptitle("subplot Test")
plt.show()
保存图片
plt.savefig(img_path)
import matplotlib.pyplot as plt
import numpy as np

# 定义绘图所需要的坐标点
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

# 通过两个坐标 (0,0) 到 (6,100) 来绘制一条线,并进行可视化展示
plt.plot(xpoints, ypoints)
plt.savefig("tar.jpg") # 保存图片
plt.show()

savefig()操作一定要在show()之前执行,否则保存的将是空图片

设置图像尺寸

# plt.rcParams['figure.figsize'] = (8.0,4.0)
plt.rcParams['figure.dpi'] = 200  # 默认72
柱状图

Matplotlib采用pyplot 中的 bar() 方法来绘制柱形图

bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
参数描述
x浮点型数组,柱形图的 x 轴数据
height浮点型数组,柱形图的高度
width浮点型数组,柱形图的宽度
bottom浮点型数组,底座的 y 坐标,默认 0
align柱形图与 x 坐标的对齐方式

基础柱状图

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["英语", "数学", "政治", "语文"])
y = np.array([80, 76, 85, 90])

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

# 柱状图1
plt.subplot(1, 2, 1)
plt.bar(x, y)

# 柱状图2
plt.subplot(1, 2, 2)
plt.barh(x, y, color='green') # color属性指定柱状图颜色

plt.show()

不同颜色柱状图

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["英语", "数学", "政治", "语文"])
y = np.array([80, 76, 85, 90])

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

# 指定颜色
colors = ['red', 'blue', '#00ff00', 'lightblue']
plt.bar(x, y, color=colors)

plt.show()

宽度控制

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["英语", "数学", "政治", "语文"])
y = np.array([80, 76, 85, 90])

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

# 柱状图1(统一控制柱子的宽度)
plt.subplot(1, 2, 1)
plt.bar(x, y, width=0.5)

# 柱状图2(通过数组控制每个柱子的宽度)
plt.subplot(1, 2, 2)
widths = [0.8, 0.7, 0.6, 0.5]
plt.bar(x, y, color='green', width=widths)  # color属性指定柱状图颜色

plt.show()

对齐方式控制

'''
  柱形图与x坐标的对齐方式通过align属性设置,取值为'center'(默认值) 或 'edge'
  'center'中心对齐,'edge'左边缘对齐
  右边缘对齐可通过传递负数的宽度值及align='edge'实现
'''

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["英语", "数学", "政治", "语文"])
y = np.array([80, 76, 85, 90])

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

# 柱状图1()
plt.subplot(1, 2, 1)
plt.bar(x, y, align="edge")

# 柱状图2
plt.subplot(1, 2, 2)
plt.bar(x, y, color='green', align="edge", width=-0.8)  # color属性指定柱状图颜色

plt.show()

坐标轴基线

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["英语", "数学", "政治", "语文"])
y = np.array([80, 76, 85, 90])

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

# 柱状图1
plt.subplot(1, 2, 1)
plt.bar(x, y, bottom=0)

# 柱状图2
plt.subplot(1, 2, 2)
plt.bar(x, y, color='green', bottom=10)  # color属性指定柱状图颜色

plt.show()
饼状图
pie(x, explode=None, labels=None, colors=None, autopct=None,pctdistance=0.6, shadow=False, labeldistance=1.1,startangle=0, radius=1, counterclock=True, wedgeprops=None,textprops=None, center=(0, 0), frame=False,rotatelabels=False, *, normalize=True, data=None)
属性描述
x浮点型数组,表示每个扇形的面积
explode数组,表示各个扇形之间的间隔,默认值为0
labels列表,各个扇形的标签,默认值为 None
colors数组,表示各个扇形的颜色,默认值为 None
autopct设置饼图内各个扇形百分比显示格式,%d%%整数百分比,%0.1f一位小数,%0.1f%%一位小数百分比,%0.2f%%两位小数百分比
labeldistance标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧
pctdistance类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6
shadow设置饼图的阴影(True | False),默认为False
radius设置饼图的半径(默认为 1)
startangle起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起
counterclock布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针
wedgeprops字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。例如:wedgeprops={‘linewidth’:5} 设置 wedge 线宽为5
textprops字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式
center浮点类型的列表,默认值:(0,0)。用于设置图标中心位置
frame绘制带有表的轴框架(True | False),默认为False
rotatelabels值为True则旋转每个 label 到指定的角度,默认值为False

基本饼状图

import matplotlib.pyplot as plt
import numpy as np

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

# 饼状图1
plt.subplot(1, 2, 1)
plt.pie(y)

# 饼状图2
plt.subplot(1, 2, 2)
plt.title("Pie Test")  # 设置标题
labels = ['A', 'B', 'C', 'D']  # 设置饼图标签
colors = ["#d5695d", "#5d8ca8", "#65a479", "#a564c9"]  # 设置饼图颜色
plt.pie(y, labels=labels, colors=colors)

plt.show()

百分比显示

import matplotlib.pyplot as plt
import numpy as np

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

plt.title("Pie Test")  # 设置标题

labels = ['A', 'B', 'C', 'D']  # 设置饼图标签
colors = ["#d5695d", "#5d8ca8", "#65a479", "#a564c9"]  # 设置饼图颜色
explode = (0, 0.2, 0, 0)  # 第二部分突出显示,值越大,距离中心越远

# autopct # 格式化输出百分比
plt.pie(y, labels=labels, colors=colors, explode=explode, autopct='%.2f%%')
plt.show()
散点图
scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
属性描述
x,y长度相同的数组,散点图的数据点
s点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小
c点的颜色,默认蓝色 ‘b’,也可以是个 RGB 或 RGBA 二维行数组
marker点的样式,默认小圆圈 ‘o’
alpha透明度设置,0-1 之间,默认 None,即不透明
linewidths标记点的长度。
edgecolors颜色或颜色序列,默认为 ‘face’,可选值有 ‘face’, ‘none’

基本散点图

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

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

设置散点图标大小和颜色

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

# 设置散点图标大小
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90])

# 设置散点图标颜色
colors = np.array(["red", "green", "black", "orange", "purple", "beige", "cyan", "magenta"])

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

绘制多组散点图

import matplotlib.pyplot as plt
import numpy as np

# 第一组散点图
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', alpha=0.3) # alpha用于设置透明度

plt.show()

颜色条

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
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='winter_r') # 绘制散点图
plt.colorbar() # 显示颜色条

plt.show()

cmap取值列表

色条名称(正序)色条名称(逆序)
AccentAccent_r
BluesBlues_r
BrBGBrBG_r
BuGnBuGn_r
BuPuBuPu_r
CMRmapCMRmap_r
Dark2Dark2_r
GnBuGnBu_r
GreensGreens_r
GreysGreys_r
OrRdOrRd_r
OrangesOranges_r
PRGnPRGn_r
PairedPaired_r
Pastel1Pastel1_r
Pastel2Pastel2_r
PiYGPiYG_r
PuBuPuBu_r
PuBuGnPuBuGn_r
PuOrPuOr_r
PuRdPuRd_r
PurplesPurples_r
RdBuRdBu_r
RdGyRdGy_r
RdPuRdPu_r
RdYlBuRdYlBu_r
RdYlGnRdYlGn_r
RedsReds_r
Set1Set1_r
Set2Set2_r
Set3Set3_r
SpectralSpectral_r
WistiaWistia_r
YlGnYlGn_r
YlGnBuYlGnBu_r
YlOrBrYlOrBr_r
YlOrRdYlOrRd_r
afmhotafmhot_r
autumnautumn_r
binarybinary_r
bonebone_r
brgbrg_r
bwrbwr_r
cividiscividis_r
coolcool_r
coolwarmcoolwarm_r
coppercopper_r
cubehelixcubehelix_r
flagflag_r
gist_earthgist_earth_r
gist_graygist_gray_r
gist_heatgist_heat_r
gist_ncargist_ncar_r
gist_rainbowgist_rainbow_r
gist_sterngist_stern_r
gist_yarggist_yarg_r
gnuplotgnuplot_r
gnuplot2gnuplot2_r
graygray_r
hothot_r
hsvhsv_r
infernoinferno_r
jetjet_r
magmamagma_r
nipy_spectralnipy_spectral_r
oceanocean_r
pinkpink_r
plasmaplasma_r
prismprism_r
rainbowrainbow_r
seismicseismic_r
springspring_r
summersummer_r
tab10tab10_r
tab20tab20_r
tab20btab20b_r
tab20ctab20c_r
terrainterrain_r
twilighttwilight_r
twilight_shiftedtwilight_shifted_r
viridisviridis_r
winterwinter_r
箱线图

箱线图是一种用作显示一组数据分散情况资料的统计图,主要作用是发现数据内部整体的分布分散情况,包括最大值、最小值、中位数、及上下四分位数、异常值等。

https://blog.csdn.net/ningyanggege/article/details/82625947?utm_term=%E7%AE%B1%E7%BA%BF%E5%9B%BE&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-5-82625947-null-null&spm=3001.4430

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NuR2OWiu-1654067119136)(matplotlib.assets/image-20220522224524581.png)]

plt.boxplot(
            x,                # 指定要绘制箱线图的数据
            notch=None,       # 是否是凹口的形式展现箱线图,默认非凹口;
            sym=None,         # 指定异常点的形状,默认为+号显示;
            vert=None,        # 是否需要将箱线图垂直摆放,默认垂直摆放;
            whis=None,        # 指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
            positions=None,   # 指定箱线图的位置,默认为[0,1,2…];
            widths=None,      #指定箱线图的宽度,默认为0.5;
            patch_artist=None,# 是否填充箱体的颜色;
            meanline=None,    # 是否用线的形式表示均值,默认用点来表示;
            showmeans=None,   # 是否显示均值,默认不显示;
            showcaps=None,    # 是否显示箱线图顶端和末端的两条线,默认显示;
            showbox=None,     # 是否显示箱线图的箱体,默认显示;
            showfliers=None,  # 是否显示异常值,默认显示;
            boxprops=None,    # 设置箱体的属性,如边框色,填充色等;
            labels=None,      # 为箱线图添加标签,类似于图例的作用;
            flierprops=None,  # 设置异常值的属性,如异常点的形状、大小、填充色等;
            medianprops=None, # 设置中位数的属性,如线的类型、粗细等;
            meanprops=None,   # 设置均值的属性,如点的大小、颜色等;
            capprops=None,    # 设置箱线图顶端和末端线条的属性,如颜色、粗细等;
            whiskerprops=None # 设置须的属性,如颜色、粗细、线的类型等;
)

基础箱线图

import matplotlib.pyplot as plt

x = [1, 2, 3, 5]  # 数据集
plt.boxplot(x)  # 垂直显示箱线图
plt.show()  # 显示该图

y = [1, 2, 3, 5]  # 数据集
plt.boxplot(y, vert=False)  # 水平显示箱线图
plt.show()  # 显示该图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ssSGPDwU-1654067119138)(matplotlib.assets/image-20220522234526907.png)]

箱线图 - 平均值

import matplotlib.pyplot as plt

# 以下两条语句解决中文乱码问题,若语句缺失,则中文以乱码展示
plt.rcParams['font.sans-serif'] = 'SimHei'  # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴乱码问题

# showmeans:是否显示平均值, meanline:平均值是否显示为直线, labels:箱线图参数标注
x = [83, 80, 85, 80, 84, 83]  # 数据集
plt.boxplot(x, showmeans=True, meanline=True, labels=['分数'])  # 垂直显示箱线图
plt.show()  # 显示该图

箱线图综合实例

import matplotlib.pyplot as plt

# 设置中文和负号正常显示
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False

# 绘图:daily_Ionset_r_c1_predicted的箱线图
data = [1200, 1300, 1400, 500, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 4000]

plt.boxplot(
    x=data,  # 指定绘图数据
    patch_artist=True,  # 要求用自定义颜色填充盒形图,默认白色填充
    showmeans=True,  # 以点的形式显示均值
    boxprops={'color': 'black', 'facecolor': '#9999ff'},  # 设置箱体属性,填充色和边框色
    flierprops={'marker': 'o', 'markerfacecolor': 'red', 'color': 'black'},  # 设置异常值属性,点的形状、填充色和边框色
    meanprops={'marker': 'D', 'markerfacecolor': 'indianred'},  # 设置均值点的属性,点的形状、填充色
    medianprops={'linestyle': '--', 'color': 'orange'})  # 设置中位数线的属性,线的类型和颜色

plt.show()

多箱型图

import matplotlib.pyplot as plt
import numpy as np

# 设置中文和负号正常显示
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False

# 数据集
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]).reshape(3, 4)

plt.boxplot(data, labels=['A', 'B', 'C', 'D'])
plt.show()
y_Ionset_r_c1_predicted的箱线图 data = [1200, 1300, 1400, 500, 1500, 1600, 1700, 1800, 1900, 2000, 2100, 4000]

plt.boxplot(
x=data, # 指定绘图数据
patch_artist=True, # 要求用自定义颜色填充盒形图,默认白色填充
showmeans=True, # 以点的形式显示均值
boxprops={‘color’: ‘black’, ‘facecolor’: ‘#9999ff’}, # 设置箱体属性,填充色和边框色
flierprops={‘marker’: ‘o’, ‘markerfacecolor’: ‘red’, ‘color’: ‘black’}, # 设置异常值属性,点的形状、填充色和边框色
meanprops={‘marker’: ‘D’, ‘markerfacecolor’: ‘indianred’}, # 设置均值点的属性,点的形状、填充色
medianprops={‘linestyle’: ‘–’, ‘color’: ‘orange’}) # 设置中位数线的属性,线的类型和颜色

plt.show()



**多箱型图**

```python
import matplotlib.pyplot as plt
import numpy as np

# 设置中文和负号正常显示
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False

# 数据集
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]).reshape(3, 4)

plt.boxplot(data, labels=['A', 'B', 'C', 'D'])
plt.show()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号