第二十四天-数据可视化Matplotlib

2024-03-17 12:36

本文主要是介绍第二十四天-数据可视化Matplotlib,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.介绍

2.使用

1. 安装:

2.创建简单图表

 3.图表类型

1.一共分为7类

2.变化

1.折线图

3.分布

​编辑

1.直方图

2.箱型图

4.关联

1. 散点图:

2.热力图:

5.组成

1.饼图

2.条形图

6.分组

1.簇型散点图

2.分组条形图

3.分组条形图不覆盖

7.偏差

1.发散条形图

2.面积图

8.排序


1.介绍

1. 数据可视化相关库

2.Matplotlib

1. 官网:http://matplotlib.org 

2.中文网:http://matplotlib.org.cn

2.使用

1. 安装:

pip install matplotlib

import matplotlib.pyplot as plt

2.创建简单图表

# 创建画板, 2行1列的图表 sharex:共享x轴,sharey:共享y轴
fig, axs = plt.subplots(2, 1)# 生成数据
data = np.random.randn(100)# 选取第一个画布,填充数据
axs[0].hist(data, bins=50, color="red")
axs[1].plot(data, color="red")#参数设置
#设置标题
axs[0].set_title("chart1")
axs[1].set_title("chart2")
#设置x轴y轴名称
axs[0].set_xlabel("value")
axs[0].set_ylabel("freq")
axs[1].set_xlabel("index")
axs[1].set_ylabel("value")#设置间距,避免名称重叠
fig.tight_layout()plt.show()

 3.图表类型

1.一共分为7类

2.变化

1.折线图

   

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd# 设置显示中文mpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig, ax = plt.subplots(1, 1)# 模拟数据
datas = pd.date_range("2018-01-01", "2021-01-01", freq="M")def get_price(size):return np.cumsum(np.random.randn(size))price = [get_price(datas.size), get_price(datas.size), get_price(datas.size)]
data = pd.DataFrame(price).Tdata.index = datas#填充顔色,设置面积图
for p in price:plt.fill_between(datas, y1=p)# 折线图
plt.plot(data)# 设置x轴lable为斜线
fig.autofmt_xdate()# 设置x,y轴坐标标签
ax.set_title("折线图")
fig.tight_layout()plt.show()

3.分布

1.直方图
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as npmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig,ax=plt.subplots(1,1)#模拟数据,5行5列数据
data=np.round(np.random.random(25).reshape(5,5),1)
#直方图
plt.hist(data)#设置x,y轴坐标标签
ax.set_title("产品级别图")
#明确设置x,y轴数量fig.tight_layout()plt.show()

2.箱型图
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as npmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig,ax=plt.subplots(1,1)#模拟数据,5行5列数据
data=np.round(np.random.random(25).reshape(5,5),1)
#直方图
plt.boxplot(data)#设置x,y轴坐标标签
ax.set_title("箱型图")
#明确设置x,y轴数量fig.tight_layout()plt.show()

4.关联

使用:

1. 散点图:

坐标轴为数值型数据

import matplotlib.pyplot as plt
import numpy as np
#绘制散点图x = np.random.randn(100)
y = np.random.randn(100)*1.5
plt.scatter(x=x,y=y,color="red",marker="+")
#限制x、y轴显示范围
plt.xlim(-2,2)
plt.ylim(-2,2)#显示网格
plt.grid()plt.show()

2.热力图:

类别型数据,体现的是2组变量的关联性

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as npmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig,ax=plt.subplots(1,1)
# 绘制热力图
# 定义x轴,y轴内容
# x轴为 等级
x_lable = ["1级", "2级", "3级", "4级", "5级"]
# y轴为 产品
y_lable = ["产品1", "产品2", "产品3", "产品4", "产品5"]
#模拟数据,5行5列数据
data=np.round(np.random.random(25).reshape(5,5),1)
#热点图
plt.imshow(data)#轮流锁定单元格,设置单元格文字
for i in  np.arange(len(x_lable)):for j in np.arange(len(y_lable)):plt.text(i,j,data[i][j],color="w",ha="center",va="center")#设置x,y轴坐标标签
ax.set_title("产品级别图")
#明确设置x,y轴数量
ax.set_xticks(np.arange(len(x_lable)))
ax.set_yticks(np.arange(len(y_lable)))
ax.set_xticklabels(x_lable)
ax.set_yticklabels(y_lable)fig.tight_layout()plt.show()

5.组成

1.饼图
# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd# 设置显示中文mpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig, ax = plt.subplots(1, 1)# 模拟数据
data = [0.1, 0.2, 0.3, 0.4]#绘制饼图,labels为每一项的名称 explode:突出值 autopct:格式化百分比, textprops字体格式
plt.pie(data,labels=["a","b","c","d"],explode=[0,0.2,0,0],autopct="%.1f%%",shadow=True,textprops={"size":"small"})# 设置x轴lable为斜线
fig.autofmt_xdate()# 设置x,y轴坐标标签
ax.set_title("折线图")
fig.tight_layout()plt.show()

2.条形图
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd# 设置显示中文mpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig, ax = plt.subplots(1, 1)# 模拟数据
data = [0.1, 0.2, 0.3, 0.4]
labels = ["a", "b", "c", "d"]
# 绘制条形图  color:设置条形颜色
plt.bar(labels, data, color=["r", "y", "b", "g"])# 显示条形上的文字
for x, y in zip(labels, data):plt.text(x, (y / 2), y)
# 设置x轴lable为斜线
fig.autofmt_xdate()# 设置x,y轴坐标标签
ax.set_title("条形图")
fig.tight_layout()plt.show()

6.分组

1.簇型散点图
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd# 设置显示中文mpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig, ax = plt.subplots(1, 1)# 模拟数据
a_x=np.random.random(100)+1
a_y=np.random.random(100)+1.5
a_x1=np.random.random(200)+2.1
a_y1=np.random.random(200)+1.7#绘制散点图分组
plt.scatter(a_x,a_y)
plt.scatter(a_x1,a_y1)
# 设置x轴lable为斜线
fig.autofmt_xdate()fig.tight_layout()plt.show()

2.分组条形图
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd# 设置显示中文mpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig, ax = plt.subplots(1, 1)# 模拟数据
x=["a","b","c","d"]
y1=[1,2,3,4]
y2=[4,3,2,1]
#绘制图形
plt.bar(x,y1)
plt.bar(x,y2)fig.autofmt_xdate()fig.tight_layout()plt.show()

3.分组条形图不覆盖
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd# 设置显示中文mpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig, ax = plt.subplots(1, 1)# 模拟数据axis1=[1,2,3,4]
axis2=[1.2,2.2,3.2,4.2]y1=[1,2,3,4]y2=[4,3,2,1]
#绘制图形
plt.bar(axis1,y1,width=0.2)
plt.bar(axis2,y2,width=0.2)fig.autofmt_xdate()fig.tight_layout()plt.show()

7.偏差

1.发散条形图
# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd# 设置显示中文mpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig, ax = plt.subplots(1, 1)# 模拟数据
#绘制
y=["a","b","c","d"]
data=[-1,2,0.5,4]
data.sort()
plt.hlines(y=y,xmin=0,xmax=data,colors=["r","b","y","g"])
#设置网格
plt.grid(linestyle="--",alpha=0.5)
# 设置x轴lable为斜线
fig.autofmt_xdate()fig.tight_layout()plt.show()

2.面积图
mpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号fig, ax = plt.subplots(1, 1)# 模拟数据
#绘制
datas = pd.date_range("2018-01-01", "2021-01-01", freq="M")def get_price(size):return np.cumsum(np.random.randn(size))price ={"price":get_price(datas.size)}pd=pd.DataFrame(index=datas,data=price)plt.plot(pd["price"])
#填充面积颜色
plt.fill_between(pd.index,pd["price"],0)# 设置x轴lable为斜线
fig.autofmt_xdate()fig.tight_layout()

8.排序

这篇关于第二十四天-数据可视化Matplotlib的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818962

相关文章

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名