目录:
- 基础配置
- figure图像
- 创建两个视图
- 视图名称,大小
- 背景颜色
- 子图
- 常用颜色
- 样式设置
- 视图风格设置
- 编辑
- 调整线条风格
- 标记点样式
- 透明度设置
- 设置线宽
- 两条曲线之间填充颜色
- 坐标轴设置
- 轴的数值显示范围
- 编辑
- 反转视图
- 标题设置
- 设置 x,y 轴的标签文本
- 设置 x,y 轴用文字显示刻度
- 设置坐标轴 plt.gca()
- 图例
- 图例参数
- 字符串定位
- loc元组定位
- bbox_to_anhor 定位
- 图例展示列数
- 设置图例字体大小
- 图例字体颜色
- 设置背景颜色和边框颜色
- 图例的字体与标记的位置
- 是否显示图例边框
- 图例标题
- 箭头标注
- 文本注释
- 基础图表
- 折线图
- 面积图(区域堆叠图)
- 散点图
- 柱状图
- 堆叠柱状图
- 条形图(水平柱状图)
- 堆叠条形图
- 直方图
- 饼图
- 箱型图
基础配置
- 导入matplotlib库
import matplotlib.pyplot as plt
- 基础创建
# 导入matplotlib库
import matplotlib.pyplot as plt
# 定义x,y轴变量
x = [1,2,3,4,5]
y = [10,14,12,18,15]
# 设置中文字体
plt.rcParams['font.family'] = 'Microsoft YaHei'
# 显示负号
plt.rcParams['axes.unicode_minus'] = False
# 绘制折线图
plt.plot(x,y)
# 保存图片
plt.savefig('图片名.png')
# 显示图像
plt.show()
figure图像
-
创建两个视图
# 导入matplotlib库
import matplotlib.pyplot as plt
# 定义x,y轴变量
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [10,5,13,19,32]
# 创建两个视图
# 创建第一个画布
plt.figure()
plt.plot(x,y1)
# 创建第二个画布
plt.figure()
plt.plot(x,y2)
# 查看视图
plt.show()
-
视图名称,大小
num视图名称,figsize视图长,宽。
# 定义x,y轴变量
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [10,5,13,19,32]
# figure不传入参数
plt.figure()
plt.plot(x,y1)
# figure传入参数
# num = 3, 设置figure名称为3。
# figsize=(2,2), 设置视图长,宽
plt.figure(num=3,figsize=(2,2))
plt.plot(x,y2)
# 查看视图
plt.show()
-
背景颜色
facecolor
# 导入matplotlib库
import matplotlib.pyplot as plt
# 定义x,y轴变量
x = [1,2,3,4,5]
y = [10,5,13,19,32]
# facecolor 背景颜色
plt.figure(facecolor="pink")
plt.plot(x,y)
# 查看视图
plt.show()
-
子图
-
plt.subplot()
-
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
y2 = [16,13,5,14,12,16,13,8,17,12]
# 将视图分成两行两列的图并操作的是第一个图
ax1 = plt.subplot(2,2,1)
ax1.plot(x,y1)
plt.show()
-
多个视图
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
y2 = [16,13,5,14,12,16,13,8,17,12]
# 将视图分成两行一列的图并操作的是第一个图
ax1 = plt.subplot(2,2,1)
ax1.plot(x,y1)
# 将视图分成两行两列的图并操作的是第三个图
ax2 = plt.subplot(2,2,3)
ax2.bar(x,y2)
# 将视图分成两行四列的图并操作第八张图
ax3 = plt.subplot(2,4,8)
ax3.scatter(x,y3)
plt.xlim(-2,15)
plt.ylim(0,50)
plt.show()
常用颜色
- 蓝色(blue)
- 红色(red)
- 橙色(orange)
- 绿色(green)
- 紫色(purple)
- 黑色(black)
- 灰色(grey)
- 粉色(pink)
- 白色(white)
- 黄色(yellow)
- 棕色(brown)
- 青色(Cyan)
样式设置
-
视图风格设置
# 查看所有可选的风格
print(plt.style.available)
运行返回:
['Solarize_Light2', '_classic_test_patch', '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-v0_8', 'seaborn-v0_8-bright', 'seaborn-v0_8-colorblind', 'seaborn-v0_8-dark', 'seaborn-v0_8-dark-palette', 'seaborn-v0_8-darkgrid', 'seaborn-v0_8-deep', 'seaborn-v0_8-muted', 'seaborn-v0_8-notebook', 'seaborn-v0_8-paper', 'seaborn-v0_8-pastel', 'seaborn-v0_8-poster', 'seaborn-v0_8-talk', 'seaborn-v0_8-ticks', 'seaborn-v0_8-white', 'seaborn-v0_8-whitegrid', 'tableau-colorblind10']
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,14,12,18,15]
plt.figure()
# 设置风格
plt.style.use('seaborn-v0_8')
plt.plot(x,y)
plt.show()
-
调整线条风格
import matplotlib.pyplot as plt
plt.figure()
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
plt.plot(x,y1,ls = "--")
plt.plot(x,y2,ls = "-.")
# 还可以用形象的符号代表线条风格
plt.plot(x,y,linestyle='-') # 实线
"""
-. 虚点线
. 点
-- 虚线
: 点线
, 像素点
"""
plt.show()
-
标记点样式
-
plt.plot(x,y,marker='o') :设置标记点样式
-
plt.plot(x,y,marker='o',markersize=10) :设置标记点大小
-
plt.plot(x,y,marker='o',markerfacecolor='white') :设置标记点内颜色
-
plt.plot(x,y,marker='o',markeredgecolor='grey') :设置标记点边框的颜色
-
plt.plot(x,y,marker='o',markeredgewidth=3) : 设置标记点边框的宽度
-
标记点样式:
- o 圆点
- ^ 上三角点
- v 下三角点
- < 左三角点
- > 右三角点
- 1 下三叉点
- 2 上三叉点
- 3 左三叉点
- 4 右三叉点
- s 正方点
- p 五角点
- * 星形点
- h 六边形点1
- H 六边形点2
- + 加号点
- x 乘号点
- D 实心菱形点
- d 瘦菱形点
- _ 横线点
import matplotlib.pyplot as plt
plt.figure()
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
# 设置标记点样式为"*"
plt.plot(x,y1,
marker="*",
markersize=30, # 设置标记点大小为
markerfacecolor="green", # 设置标记点内颜色为green
markeredgecolor="red", # 设置标记点边框颜色为red
markeredgewidth=3 # 设置标记点边框宽度为3
)
plt.show()
-
透明度设置
-
alpha参数,传入0~1。
-
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
plt.figure()
# 设置透明度为0.2
plt.plot(x,y1,alpha=0.2)
plt.show()
-
设置线宽
- linewidth,可以简写为lw
import matplotlib.pyplot as plt
plt.figure()
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
# 设置线宽为5
plt.plot(x,y1,lw=5)
plt.show()
-
两条曲线之间填充颜色
x:
数组 (length N),表示x轴的坐标点。y1
,y2:
数组 (length N),表示两条曲线的y轴坐标点。where:
数组 (length N),可选,用于指定哪些区域应该被填充。color:
填充颜色。alpha:
填充颜色的透明度(0到1之间)。interpolate:
是否在数据点之间插值,默认为False
。step:
如果非None
,则绘制为步函数,而不是连续填充。
import matplotlib.pyplot as plt
x = [i for i in range(1,6)]
y = [10,14,12,18,15]
y2 = [17,16,21,24,29]
# 画两条折线
plt.plot(x,y,'-o',c='blue')
plt.plot(x,y2,'-o',c='red')
# 在两条折线间填充颜色
plt.fill_between(x,y,y2,color='green',alpha=0.3)
plt.show()
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 使用 fill_between 填充两条曲线之间的区域
# where:数组 (length N),可选,用于指定哪些区域应该被填充。
plt.fill_between(x, y1, y2, where=(y1 > y2), color='pink', interpolate=True)
# 绘制两条曲线
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
坐标轴设置
-
轴的数值显示范围
xlim(),ylim() 设置 x,y 轴的数值显示范围
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,14,12,18,15]
plt.figure()
plt.plot(x,y)
# xlim()和 ylim()设置 x,y 轴的数值显示范围
plt.xlim(0,10)
plt.ylim(1,50)
plt.show()
-
反转视图
将xlim()和 ylim()的参数反转,坐标轴反转
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,14,16,18,22]
plt.figure()
plt.plot(x,y)
# 将xlim()和 ylim()的参数反转,坐标轴反转
plt.xlim(10,0)
plt.ylim(0,30)
plt.show()
-
标题设置
plt.title()
import matplotlib.pyplot as plt
# 设置中文字体
plt.urcParams["font.family"] = "Microsoft YaHei"
x = [1,2,3,4,5]
y = [10,14,16,18,22]
plt.figure()
plt.plot(x,y)
# 设置标题
# size:字体大小,loc:标题位置,pad:标题距离图片的距离,color:标题颜色 简写为c
plt.title('标题',size=20,loc="right",pad=20,color="red")
plt.show()
- 标题相对位置设置
用x,y 表示标题在x轴,y轴的位置
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Microsoft YaHei'
x = [1,2,3,4,5]
y = [10,14,16,18,22]
plt.figure()
plt.plot(x,y)
# 用x轴,y轴的位置设定标题位置
plt.title('标题', x=0.5, y=0.5)
plt.show()
-
设置 x,y 轴的标签文本
注意输入中文时一定要设置中文字体,不然会出现乱码。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,14,12,18,15]
plt.figure()
plt.plot(x,y)
# 设置中文字体
plt.rcParams['font.family'] = 'Microsoft YaHei'
# xlim()和 ylim():x,y 轴的标签文本
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.show()
-
设置 x,y 轴用文字显示刻度
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,14,12,18,15]
plt.figure()
plt.plot(x,y)
# 设置x,y轴用文字显示刻度,文字和数值对应。
# 可以用正则文本方式来显示字体 如:\alpha
plt.xticks([1,2,3,4,5],["a","b","c","d","e"])
plt.yticks([5, 10, 15, 20, 25],['really bad', 'bad', 'normal', 'good', 'really good'])
plt.show()
-
设置坐标轴 plt.gca()
gca 是 get current axis 的缩写,就是一个控制坐标轴的函数
- plt.gca:获取坐标轴信息
- ax.spines:选择边框
- set_color:设置颜色
- top:上,bottom:下,left:左,right:右
- 删除上,右边框
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,14,12,18,15]
plt.figure()
plt.plot(x,y)
# 获取坐标信息
ax = plt.gca()
# 将上,右边框设置为无色
# ax.spines:选择边框
# set_color:设置颜色
ax.spines["right"].set_color('None')
ax.spines["top"].set_color("None")
plt.show()
- 设置x轴刻度的位置
- top:上面,bottom:底部,both:这两个,default:默认,none:无
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,14,12,18,15]
plt.figure()
plt.plot(x,y)
ax = plt.gca()
# 设置x轴刻度的位置
# top:上面,bottom:底部,both:这两个,default:默认,none:无
ax.xaxis.set_ticks_position("top")
ax.yaxis.set_ticks_position("none")
plt.show()
- outward 坐标轴距离图片的距离
- axes 坐标轴在图片的位置百分比
- data:表示按数值挪动,其后数字代表挪动到x或Y轴的刻度值
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [10,14,12,18,15]
plt.figure(facecolor="pink")
plt.plot(x,y)
ax = plt.gca()
ax.spines["right"].set_color('None')
ax.spines["top"].set_color("None")
# 移动坐标轴
# outward 坐标轴距离图片的距离
# axes 坐标轴在图片的位置百分比
# data:表示按数值挪动,其后数字代表挪动到x或Y轴的刻度值
ax.spines["bottom"].set_position(("data",12))
ax.spines["left"].set_position(("outward",20))
plt.show()
-
图例
- plt.legend(handles, labels)
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
plt.figure()
# 此处的line后面必须加"," 才能正常输出图例内容,否则显示空白图例框
line1, = plt.plot(x,y1)
line2, = plt.plot(x,y2)
# 设置标签为"a","b"
plt.legend(handles=[line1,line2],labels=["a","b"])
plt.show()
-
图例参数
参数 | 含义 |
---|---|
loc | 字符串或反应相对位置的浮点型数据组成的坐标数据; |
bbox_to_anchor | 两个或四个浮点数的元组,与loc参数一起决定图例的展示位置 |
ncols | 图例展示为几列,默认展示为1列 |
fontsize | 图例的字体大小,传入整数或者字符串 |
labelcolor | 图例中文本颜色,默认为黑色,取值可以为单个字符串颜色或颜色列表 |
markerfirst | 传入布尔值,True:表示图例中的字体放在标记右边,False:表示图例字体放在标记左边。 |
frameon | 传入布尔值,是否显示图例边框,True:是 ,False:否 |
fancybox | 传入布尔值,是否绘制圆角边框,True:是 ,False:否 |
shadow | 传入布尔值,是否显示图例的阴影效果,True:是 ,False:否 |
facecolor | 图例填充颜色,默认为白色 |
edgecolor | 图例边界颜色,默认为白色 |
title | 图例标题,默认无标题 |
title_fontproperties | 图例标题字体属性 |
title_fontsize | 图例标题字体大小 |
borderpad | 图例距离边界框的距离,默认为0.4 |
lablespacing | 图例之间的垂直的距离,默认为0.4 |
handlelength | 图例的长度,默认为2.0 |
handlelheight | 图例的高度,默认为0.7 |
handleltextpad | 图例与图例文本之间的空白距离,默认为0.8 |
columnspacing | 图例列间距,默认为2.0 |
-
字符串定位
- loc参数,设置图例位置,可以用字符串或数字设置。
Location String | Location Code | 位置 |
---|---|---|
best | 0 | 自动寻找合适位置 |
upper right | 1 | 右上角 |
upper left | 2 | 左上角 |
lower left | 3 | 左下角 |
lower right | 4 | 右下角 |
right | 5 | 右边 |
center left | 6 | 左中 |
center right | 7 | 右中 |
lower center | 8 | 下中 |
upper center | 9 | 上中 |
center | 10 | 中心 |
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
plt.figure()
line1, = plt.plot(x,y1)
line2, = plt.plot(x,y2)
# 设置图例位置为右中。
plt.legend(handles=[line1,line2],labels=["a","b"],loc="center left")
plt.show()
-
loc元组定位
- loc参数,设置图例位置,可以用字符串或数字设置。
- 用元组作为坐标设置位置。
- 元组第一个参数为水平坐标,第二个数为高度坐标。
坐标可以大于1,但会超出图片范围,看具体需求设定。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
plt.figure()
line1, = plt.plot(x,y1)
line2, = plt.plot(x,y2)
# 元组第一个参数为水平坐标,第二个数为高度坐标。
# 坐标可以大于1,但会超出图片范围,看具体需求设定。
plt.legend(handles=[line1,line2],labels=["a","b"],loc=(0.5,0.2))
plt.show()
-
bbox_to_anhor 定位
-
bbox_to_anhor要配合loc定位。
-
先框选出要画图例的区域,配合loc指定图例的位置。
- bbox_to_anhor要传四个参数:
- 第一个参数是:要框区域左下角的水平分数。
- 第二个参数是:要框区域左下角的垂直分数。
- 第三个参数是:所框区域的宽。
- 第四个参数是:所框区域的高。
-
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
plt.figure()
line1, = plt.plot(x,y1)
line2, = plt.plot(x,y2)
# 元组第一个参数为水平坐标,第二个数为高度坐标。
# 坐标可以大于1,但会超出图片范围,看具体需求设定。
plt.legend(
handles=[line1,line2],
labels=["a","b"],
loc="center left",
bbox_to_anchor=(2/5,8/20,3/5,8/20)
)
plt.show()
-
图例展示列数
-
图例展示为几列,默认展示为1列
-
ncols参数,传入数字类型。
-
import matplotlib.pyplot as plt
plt.figure()
a, = plt.plot(x,y1)
b, = plt.plot(x,y2)
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
# ncols=2,设置图例按两列展示
plt.legend(handles=[a,b],labels=["a","b"],ncols=2)
plt.show()
-
设置图例字体大小
-
fontsize 参数
import matplotlib.pyplot as plt plt.figure() a, = plt.plot(x,y1) b, = plt.plot(x,y2) x = [1,2,3,4,5] y1 = [10,14,12,18,15] y2 = [16,13,5,14,12] # fontsize=30,设置图例字体大小为30。 plt.legend(handles=[a,b],labels=["a","b"],fontsize=30) plt.show()
-
-
图例字体颜色
- labelcolor 设置图例字体颜色
- 取值可以为单个字符串颜色或颜色列表
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
plt.figure()
a, = plt.plot(x,y1)
b, = plt.plot(x,y2)
# labelcolor 设置图例字体颜色。
plt.legend(handles=[a,b],labels=["a","b"],fontsize=30,labelcolor="blue")
plt.show()
-
设置背景颜色和边框颜色
-
背景颜色::facecolor
-
边框颜色 :edgecolor
-
import matplotlib.pyplot as plt
plt.figure()
a, = plt.plot(x,y1)
b, = plt.plot(x,y2)
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
# 设置背景颜色和边框颜色
plt.legend(handles=[a,b],labels=["a","b"],facecolor="pink",edgecolor="green")
plt.show()
-
图例的字体与标记的位置
- markerfirst,传入布尔值
- True:表示图例中的字体放在标记右边,False:表示图例字体放在标记左边。
import matplotlib.pyplot as plt
plt.figure()
a, = plt.plot(x,y1)
b, = plt.plot(x,y2)
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
# markerfirst 设置False:表示图例字体放在标记左边。
plt.legend(handles=[a,b],labels=["a","b"],markerfirst=False)
plt.show()
-
是否显示图例边框
-
frameon 传入布尔值。
-
True:是
-
False:否
-
import matplotlib.pyplot as plt
plt.figure()
a, = plt.plot(x,y1)
b, = plt.plot(x,y2)
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
# frameon 是否显示图例边框,True:是,False:否
plt.legend(handles=[a,b],labels=["a","b"],frameon=False)
plt.show()
-
图例标题
-
title
-
默认无标题
-
import matplotlib.pyplot as plt
plt.figure()
a, = plt.plot(x,y1)
b, = plt.plot(x,y2)
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
y2 = [16,13,5,14,12]
# title 设置图例标题
plt.legend(handles=[a,b],labels=["a","b"],title="abc")
plt.show()
-
箭头标注
- plt.Annotate(
-
text:标注文本内容
-
xy:箭头指向的位置
- xytext:标注文本内容的位置
- 以下参数中提供字典来绘制从文本到注释点的箭头
-
arrowprops = {
-
width: 箭把宽度
-
headwidth:箭头头部宽度
-
headlength:箭头长度
-
facecolor:填充颜色
-
-
}
- fontsize:设置字体大小
- color:设置字体颜色
-
import matplotlib.pyplot as plt
plt.figure()
a, = plt.plot(x,y1)
b, = plt.plot(x,y2)
plt.annotate("标注",(3,12),(4,10),arrowprops={
'facecolor':'pink',
'width':30,
"headlength":30,
"headwidth":60
},
fontsize=30,color="red")
plt.show()
-
文本注释
- 参数说明:
- x, y: 浮点数,表示文本字符串的x和y坐标(即文本标签在图表上的位置)。
- s: 字符串,表示要添加的文本内容。
- fontsize: 设置字体大小
-
bbox参数指定文本框的样式,使用
dict
指定-
"round":
圆角矩形框。 -
"square":
正方形框,带有尖角。 -
"sawtooth"
:锯齿形框。 -
"fancy":
一个带有圆角和内部凹陷的复杂框。
-
- facecolor: 设置背景颜色
- edgecolor:设置边框颜色
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Microsoft YaHei'
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
plt.plot(x,y1)
plt.text(2, 10, "注释", fontsize=14,
bbox=dict(boxstyle='round', facecolor='white', edgecolor='red', alpha=0.7)
)
plt.show()
基础图表
-
折线图
- plt.plot()
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y1 = [10,14,12,18,15]
plt.figure()
plt.plot(x,y1)
plt.show()
-
面积图
- plt.stackplot()
import matplotlib.pyplot as plt
plt.figure()
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
y2 = [16,13,5,14,12,16,13,8,17,12]
plt.stackplot(x,y1,y2,colors=['g','orange'])
plt.show()
-
散点图
-
plt.scatter()
-
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
plt.figure()
# 设透明度为0.3
plt.scatter(x,y1,alpha=0.3)
# 显示颜色对比条
plt.colorbar()
plt.show()
-
柱状图
- plt.bar()
- linestyle:线条样式
- tick_label:表示柱子的刻度标签
- linewidth:边框宽度
- edgecolor:边框颜色
- label:设置标签
- alpha:透明度
- color:表示柱状图颜色
- align:表示柱状图的中心位置,“center”,“lege”边缘,默认值为’center’
- bottom:表示柱状图的起始位置,也就是y轴的起始坐标,默认值为None
- width:柱状图的宽度,取值在 0~1 之间
- plt.bar()
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
plt.figure()
plt.bar(x, y1)
plt.show()
-
堆叠柱状图
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
y2 = [16,13,5,14,12,16,13,8,17,12]
plt.figure()
# bottom:表示柱状图的起始位置,也就是y轴的起始坐标
plt.bar(x, y1)
plt.bar(x,y2,bottom=y1)
plt.show()
-
条形图(水平柱状图)
- plt.barh()
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
y2 = [16,13,5,14,12,16,13,8,17,12]
plt.figure()
plt.barh(x, y1)
plt.show()
-
堆叠条形图
在绘制水平方向的堆叠条形图时,需要将参数 bottom 改为 left,将参数 width 改为 height,需要将 x 轴标签改为 Score,y 轴标签改为 Teams。其他的和垂直方向的堆叠条形图的绘制类似。
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y1 = [10,14,12,18,15,12,8,19,14,15]
y2 = [16,13,5,14,12,16,13,8,17,12]
plt.figure()
plt.barh(x, y1)
plt.barh(x,y2,left=y1)
plt.show()
-
直方图
-
plt.hist()
-
什么是直方图?
- 直方图是一种可视化表示数据在连续间隔或者特定时间段内容的分布情况
- 直方图又称为质量分布图,属于条行图的一种
- 直方图x轴表示数据类型,纵轴表示分布情况,每个数据宽度可以任意变化
-
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(140, 180, 200)
plt.figure()
plt.hist(x,bins=20)
plt.show()
- 直方图属性
- x:
数据集,最终的直方图将对数据集进行统计 - 设置透明度
- 关键字:alpha
- 默认为0,取值范围为0~1
- 统计的区间分布划分,指定bin(箱子)的个数
- 关键字:bins
- 可选项,默认为10
- 设置颜色
- facecolor:设置长条形颜色关键字:
- edgecolor:设置边框的颜色关键字:
- 颜色选择值
- 使用颜色的英语单词
- 使用颜色简称:红色"r",蓝色"b"
- 使用GRB:格式(r,g,b),取值范围:0~1
- 设置样式
- histtype:
- "bar":柱状形数据并排,默认值
- "barstacked":柱状形数据重叠并排
- "step":柱状形颜色不填充
- "stepfilled":填充的线性
- histtype:
- x:
- 设置直方图柱状形不填充,边框颜色为红色
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(140, 180, 200)
plt.figure()
# 设置直方图柱状形不填充,边框颜色为红色
plt.hist(x,bins=20,histtype="step",edgecolor="r")
plt.show()
- 添加折线直方图
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(140, 180, 200)
plt.figure()
# 添加折线直方图
x,y,no = plt.hist(x,bins=10)
plt.plot(y[:10],x,"--o")
plt.show()
-
饼图
- plt.pie()
import matplotlib.pyplot as plt
plt.figure()
plt.pie([4,2,5,6,3],
labels=["a","b","c","d","e"],
# pctdistance=, # 内标签距离圆心的距离
labeldistance=1.2, # 外标签距离圆心的距离
startangle=90, # 起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
shadow=True, # 是否设置阴影效果
explode=(0, 0, 0, 0,0.2), # 每一块距离中心距离
textprops={ # 字体属性
'fontsize' : 30,
'color' : 'b',
},
)
plt.show()
-
箱型图
- plt.boxplot()
import matplotlib.pyplot as plt
# 创建一些示例数据
np.random.seed(10)
data1 = np.random.normal(100, 10, 200)
data2 = np.random.normal(90, 20, 200)
data3 = np.random.normal(80, 30, 200)
data4 = np.random.normal(70, 40, 200)
# 将数据放入一个列表中
data = [data1, data2, data3, data4]
# 创建箱线图
plt.boxplot(data, patch_artist=True)
plt.show()