matplotlib
时间:2021-09-22
本文章向大家介绍matplotlib,主要包括matplotlib使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
matplotlib 是一个2D绘图库。
-
折线图: 能够显示数据的变化趋势,反映事物的变化情况(变化)
-
散点图:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
-
柱状图: 绘制离散额数据,比较数据之间的差别(统计/对比)
-
直方图:绘制连续性的数据,展示一组或多组数据的分布状况(统计)
-
饼图:分类数据的占比情况(占比)
import matplotlib.pyplot as plt
%matplotlib inline #在jupyter中显示
plt.show()
折线图
# 对折线进行操作
plt.plot(x,y.color='red',alpha=1,linestyle='-',linewidth=3)
'''
color: 设定颜色,跟单词或16进制的色值
alpha: 设定透明度,0-1. 0:透明。 1:不透明
linestyle: 设定线的形状。 '--' 虚线。 '-' 实线。 '-.' :
linewidth: 设定宽度
'''
# 对折点进行操作
plt.plot(x,y,marker = 'o',markersize =10, markerfacecolor = 'red', markeredgecolor = 'black', markeredgewidth =5)
'''
marker 折点的形状
markersize 折点大小
markerfacecolor 折点颜色
markeredgecolor 折点边缘颜色
markeredgewidth 折点边缘宽度
'''
# 设置图片大小与保存
plt.figure(figsize = (20,8),dpi =80) # 长宽大小为英寸,dpi像素
plt.savefig(./名称.png) # png为矢量图形,可进行抠图
plt.show() # 保存应该在show之前
# 构造 x,y轴
x_ticks_label = ["{}:00".format(i) for i in range(min(x),max(x)+1] #设置x轴标签
plt.xticks(x[::3],x_ticks_lable[::3],rotation = 45) #rotation 标签旋转角度,[::3]选取显示的刻度
# 修改坐标轴范围
x = np.arrange(-10,11,1)
y = x**2
plt.plot(x,y)
plt.xlim([-5,5]) # .xlim 可修改范围,也可以只修改单边数据 plt.xlim(xmin =-4)
plt.ylim([0,80])
# 坐标轴显示
ax = plt.gca() # 显示边缘线
ax.spines['right'].set_color('none') #对相应的边进行修改
# 设置原点
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
# 设置中文字体
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname = '字体路径',size = 10) # "C:\Windows\Fonts"
plt.title("标题名称",fontproperties = my_font, color = '', size = )
# 一图多线
y1 = [1,22,33,44,55]
y2 = [3,45,67,67,78]
x = range(1,6)
plt.plot(x,y1,label = 'y1',color = '',zorder = 20) # zoeder谁在图层上方
plt.plot(x,y2,label = 'y2',color ='',zorder = 2)
plt.legend(prop = my_font,loc = 'upper right') #图例
plt.grid(alpha = 1) # 绘制网格
# 多个坐标系子图
import numpy as np
x = np.arange(1,100)
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
ax1 =fig.add_subplot(2,2,1) # 将画布进行分割,将横向分为两部分,将纵向分为两部分
ax1.plot(x,x)
ax2 = fig.add_subplot(2,2,2)
ax2.plot(x,x**2)
ax3 = fig.add_subplot(2,2,3)
ax3.plot(x,np.log(x))
ax4 = fig.add_subplot(2,2,4)
ax1.plot(x,x)
散点图
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
x= range(1,8)
y = [1,2,34,45,6,7,78]
plt.scatter(x,y) # scatter 绘制散点图
条形图
a= ['a','b','c','d','e']
b= ['33.09','44.88','34.67','56','75']
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
reacts = plt.bar(range(len(a)),[float(i) for i in b, width = 0.3, color['r','g','b']] # bar 条形图
plt.xticks(range(len(a)),a,fontproperties = my_font)
for react in reacts: # 在条形图上写上数据的大小
height = react.get_height()
plt.text(react.get_x()+react.get_width()/2,height+0.5,str(height),ha='center') # 显示数据大小的“x坐标,y坐标,大小”
# 横向条形图
reacts = plt.barh(range(len(a)),[float(i) for i in b, width = 0.3, color['r','g','b']] # barh 横向条形图
plt.yticks(range(len(a)),a,fontproperties = my_font)
for react in reacts: # 在条形图上写上数据的大小
width = react.get_width()
plt.text(width,react.gety()+0.15,str(width),va='center') # 显示数据大小的“x坐标,y坐标,大小”
# 并列条形图与罗列条形图
index = np.arange(4)
BJ =[50,55,54,60]
SH = [44,65,42,67]
# 并列条形图
plt.bar(index,BJ,width=0.3)
plt.xticks(index+0.3/2,index) #将zuo'biao刻度放在两柱形中间
plt.bar(index + 0.3,SH,width = 0.3)
# 罗列条形图,堆积条形图
plt.bar(index,BJ,width=0.3)
plt.xticks(index+0.3/2,index) #将zuo'biao刻度放在两柱形中间
plt.bar(index + 0.3,SH,bottom =BJ,width = 0.3) #设置bottom
直方图
time = [1,2,3,4,5,6,7,8,9,0,9,8,7,6,5,4,3,2,1,3,5,6,7,8,5,3,5,7,8,3,4,5,6,8,5]
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
distance = 2
group_num = int((max(time)-min(time))/distance)
plt.hist(time,bins = group_num) # bins 分组
plt.xticks(range(min(time),max(time))[::2])
plt.grid(linestyle = '--',alpha = 0.5 )
饼图
# 标签
label_list = ['第一部分','第二部分','第三部分']
# 数据
size = [55,35,10]
# 突出显示
explode = [0,0.05,0]
# 颜色
color = ['r','g','b']
fig = plt.figure(figsize=(20,8),dpi = 80) #绘制画布
pathes,l_text,p_text = plt.pie(size,explode = explode,colors = color,label = label_list,labeldistance =1.1,autopct='%1.1f%%',shadow =False) # 对饼状图的数据进行接收
'''
size 大小,数据
explode : ~~是否显示突出
colors :颜色
labels:标签
labeldistance 标签距离圆心位置
autopct: 数据显示形式
shadow : 阴影
pathes: 扇形列表
l_text: 标签列表
p_text: 扇形百分比列表
'''
for t in l_text:
t.set_fontproperties(my_font)
for i in p_text:
i.set_size(17)
for j in pathes:
j.set_color('pink')
break
原文地址:https://www.cnblogs.com/The-dancing-salted-fish/p/15320960.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux三剑客命令之Awk
- 面试2万月薪必会知识:AQS
- MyBatis XML详解
- Linux三剑客命令之Sed
- Linux运维必会的100道MySql面试题之(四)
- 开源组件ELK日志系统配置与管理
- MySQL集群高可用架构之MHA
- MySQL 主从同步架构中你不知道的“坑”
- Nginx+keepalived高可用配置实战(内附彩蛋)
- MySQL 主从同步架构中你不知道的“坑”(完结篇)
- 分布式文件系统FastDFS详解
- 高效、易用、功能强大的 api 管理平台(内附彩蛋)
- Docker容器技术入门(一)
- 【容器技术】Docker容器技术入门(二)
- Mysql+Mycat实现数据库主从同步与读写分离