Matplotlib数据可视化

2023-10-29

e# 安装及使用

安装 pip install -i https://mirrors.aliyun.com/pypi/simple/ matplotlib
使用 import Matplotlib.pyplot as plt
操作需要numpy数据对象需一并引入 import numpy as np

散点图

生成需要的数据

# 从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.
numpy.random.uniform(low,high,size)
# 生成100行2列的从0.0到0.5的随机数
array1 = np.random.uniform(0.0, 5.0, size=(100, 2))
array1
# 生成100行2列的从4.2到10的随机数
array2 = np.random.uniform(4.2, 10, size=(100, 2))
array2

保存需要的数据

保存名 matplot_test_detal.txt
fmt存储方式 浮点 浮点

保存名:matplot_test_detal.txt
fmt存储方式: 浮点(空格)浮点
每行分割符: \n

np.savetxt('./matplot_test_detal1.txt',array1,fmt='%f %f', delimiter = '\n')
np.savetxt('./matplot_test_detal2.txt',array2,fmt='%f %f', delimiter = '\n')

读取需要的数据

a = np.loadtxt('./matplot_test_detal1.txt')
b = np.loadtxt('./matplot_test_detal2.txt')

绘散点图

plt.scatter(x,y)
x>[:]取所有的元素
x>0 第一列

plt.scatter(a[:,0],a[:,1])
plt.scatter(b[:,0],b[:,1])

散点图属性

# 打印形状
a.shape
# 设置样式
x = [1,2,3,4]
y = [2,3,4,8]
plt.scatter(x,y,s=[20,40,80,300], color=['r','g','b','y'], marker = '^')

练习

# 生成20个男人身高
male_high = np.random.uniform(110 185,size=20)
male_high
# 生成20个男人身份id 删除0位
male_id = np.arange(21)
male_id = np.delete(male_id,0)
# 从行数据变成列数据后合并
male_high = male_high.reshape(20,1)
male_id = male_id.reshape(20,1)
male = np.concatenate((male_id,male_high), axis = 1)
# 女士同理
female_high = np.random.uniform(140, 185,size=20)
female_id = np.arange(21)
female_id = np.delete(female_id,0)
female_high = female_high.reshape(20,1)
female_id = female_id.reshape(20,1)
female = np.concatenate((female_id,female_high), axis = 1)
female

# 男女合并
X = np.concatenate((male, female),axis = 0)
# 性别 1男 0女
y = np.concatenate([np.ones(20), np.zeros(20)])
# 求男性身高
X[y==1]

# 绘制
plt.scatter(X[y==1,0],X[y==1,1],color='r')
plt.scatter(X[y==0,0],X[y==0,1],color='g')

绘制折线图

普通折线图

x = np.arange(10)
x
np.random.seed(1)
y = np.random.random(size = 10)
y
plt.plot(x,y,color='y', linestyle='--',marker='h')

sinx

# 生成100个x轴坐标
x = np.linspace(0,10,100)
y = np.sin(x)
plt.plot(x,y)

cosx

y2 = np.cos(x)
y2
plt.plot(x,y2)

# 同时执行在同一张图上
plt.plot(x,y, label='sin(x)')
plt.plot(x,y2, label='cos(x)')
# 设置提示
plt.legend()
# 设置坐标轴
plt.axis([-5,15,-2,2])
plt.show()

绘制柱状图和饼图

# X轴季度
x = ['Q1','Q2','Q3','Q3']
# Y轴收入
y = [10,30,20,60]
# 绘制柱状图 颜色为green 宽度为0.3
rect = plt.bar(x,y,color='g',width = 0.3)
# 加上网格
plt.grid(True)
# 在某个坐标上显示文本
plt.text(0.2,50,'test')

绘制标度值

rect = plt.bar(x,y,color='g',width = 0.3)
plt.grid(True)

for index, item in enumerate(rect):
	_x = item.get_x() + 0.1
	_y = item.get_height() + 1
	plt.text(_x, _y,y[index])
# 延长y轴
plt.ylim(0, 70)

绘制饼图

plt.axes(aspect = 1)
# 精确到后两位,输出百分号 切出0.2 赋予阴影
plt.pie(y,labels = x,autopct = '%2.f%%',explode=[0.2,0,0,0],shadow=True)

绘制直方图

np.random.seed(100)
data = np.random.normal(9000, 3000,size = 300 )
data = data[data>=5000]
len(data)
plt.hist(data)
plt.show()

优化

# rwidth距离 alpha透明度 设置柱子个数 bins
plt.hist(data, color='g', rwidth=0.6, alpha=0.6 ,bins=20)
plt.show()

绘制箱线图

data = np.arange(1,10)
data
plt.boxplot(data)
plt.show()
np.random.seed(100)
data = np.random.normal(size = 100)
data
plt.hist(data)
plt.show()
data = np.concatenate([data,[4,7,8,9,-4]])
plt.boxplot(data)
plt.show()
# whis属性指定上下边界四分位距离默认1.5倍四分位差
plt.boxplot(data,whis=3)
plt.show()
# 显示平均值 显示平均线
plt.boxplot(data,showmeans = True,meanline = True)
plt.show()

绘制子图

# 2行1列的子图,这是两张图的第一张
plt.subplot(2,1,1)

导入数据

import pandas as pd
data = pd.read_table('./salay.txt',sep='\t')
data

设置字体

plt.rc('font',**{'family':'microsoft yahei,simhei'})

显示

plt.subplot(2,2,1)
plt.plot(data['城市'],data['月均工资'])
plt.show
# 把城市设置成索引
data = data.set_index('城市')
# 横向显示 堆叠起来
data.plot(kind='barh',stacked=True)
plt.show()
#保存
plt.savefig('./test.png')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib数据可视化 的相关文章

随机推荐

  • web 3d场景构建+three.js+室内围墙,仓库,楼梯,货架模型等,第一人称进入场景案例

    翻到了之前的一个案例 基于three js做的仓库布局模拟 地图元素除了大模型外 其他都是通过JSON数据解析动态生成的 例如墙体 柱子门口 地标等 集成了第一人称的插件可以第一人称进入场景有需要的可以下载看看 对想入门的朋友应该有一些参考
  • C# winform之属性 bindingNavigator

    适用于 BindingNavigator控件主要用来绑定数据 可以将一个数据集合与该控件绑定 以进行数据 联动的显示效果 类似于表格显示信息 详细参考 http www cnblogs com qq260250932 p 5507410 h
  • matlab特征提取和分类_SAST Weekly

    SAST weekly 是由电子工程系学生科协推出的科技系列推送 内容涵盖信息领域技术科普 研究前沿热点介绍 科技新闻跟进探索等多个方面 帮助同学们增长姿势 开拓眼界 每周更新 欢迎关注 欢迎愿意分享知识的同学投稿至 eesast mail
  • VR桥梁应用:实现可视化的桥梁监控

    在过去的几年中 虚拟现实 VR 技术已经在多个领域得到了广泛的应用 其中 桥梁巡检是一个特别有前景的应用领域 利用VR技术 我们可以创建一个安全 高效的桥梁巡检方式 帮助工程师和维护人员更好地理解和评估桥梁的状态 通过VR设备 用户可以全方
  • java线程间通讯的几种方式

    文章目录 一 使用同一个共享变量控制 Synchronized wait notify Lock Condition 利用volatile 利用AtomicInteger 二 PipedInputStream PipedOutputStre
  • 108.将有序数组转换为二叉搜索树

    108 将有序数组转换为二叉搜索树 题干描述 解题思路 递归 1 确定递归函数返回值及其参数 2 确定单层递归的逻辑 迭代法 总结 代码实现 递归法 左闭右开 递归法 左闭右闭 迭代法 题干描述 力扣入口 将一个按照升序排列的有序数组 转换
  • ob集群安装部署相关

    一 黑屏 命令行 模式安装ob三节点集群 1 主机规划 主机名 ip 内存 G cpu 安装软件 占用端口 mgr1 172 16 80 57 128 32 observer zone1 obclient obproxy 2881 2882
  • 专科程序员与本科程序员之间有什么区别?

    专科程序员和本科程序员之间最主要的区别在于他们的学历水平以及所接受的教育和培训的深度和广度不同 本科程序员通常拥有更为全面的计算机技术理论知识 同时也接受了更加系统和广泛的相关课程和实践 比如算法 计算机网络 操作系统 软件工程等等 他们研
  • Unity中3D物体添加点击事件

    简单十步曲 按步骤操作可实现对应功能 1 创建摄像机Camera Tag修改Main Camera 2 给Camera添加组件PhysicsRaycaster 3 创建一个空物体 命名EventSystem 4 给刚创建EventSyste
  • vba 获取最后一行

    mainWs Cells mainWs Rows Count 1 End xlUp row
  • FaceNet--Google的人脸识别(转)

    原文地址 http blog csdn net stdcoutzyx article details 46687471 引入 随着深度学习的出现 CV领域突破很多 甚至掀起了一股CV界的创业浪潮 当次风口浪尖之时 Google岂能缺席 特贡
  • 构建安全的数据访问-配置管理(六)

    数据库连接字符串是针对数据访问代码主要考虑的配置管理问题 应认真考虑这些字符串的存储位置以及如何保护它们 特别是当它们包括凭据时 要提高加密管理安全性 使用 Windows 身份验证 确保连接字符串的安全 使用受限制的 ACL 确保 UDL
  • 【内网提权】windows2003本地PR提权详解

    提权利用的漏洞 Microsoft Windows RPCSS服务隔离本地权限提升漏洞 RPCSS服务没有正确地隔离 NetworkService 或 LocalService 帐号下运行的进程 本地攻击者可以利用令牌劫持的方式获得权限提升
  • 项目回顾:一个简单的充值码库存管理系统

    这里写目录标题 背景 需求 第一步 从商家获取充值码 第二步 需要能在平台上售卖充值码 第三步 后台管理系统 实现 防止重复售卖 重复发货 防止超售 邮件系统 性能 小结 背景 回顾一下去年 6 月左右做的一个库存管理系统 需求 我们是做一
  • 各种开源协议

    来源 玩转嵌入式 今天跟大家分享一些开源协议的知识 这些协议缩写词在各种代码 文档中随处可见 可又有多少人对这些知识细细研究过呢 作为一名专业的嵌入式系统开发人员这些东西都是一种素养 特别是当你自己要开源一些东西的时候该如何选择开源协议就变
  • 一个移植十分方便的malloc函数族的实现

    相信学习过c语言的人都知道malloc free函数 这里就不多说怎么用了 这里要说的是 提供它们的实现 该实现方法由uboot中malloc等函数的实现改编而来 已经过验证 没有问题 多说一句 该实现支持物理地址malloc free 不
  • Vue 使用 Markdown标记语言编辑器(MavonEditor)

    文章目录 1 实现效果 2 直接撸 MavonEditor 上代码 2 1 npm安装 MavonEditor 2 2 在需要使用Markdown的Vue组件导入mavonEditor 2 3 vue页面使用 3 参考 1 实现效果 本篇文
  • 7-10倍写入性能提升:剖析WiredTiger数据页无锁及压缩黑科技

    导语 计算机硬件在飞速发展 数据规模在急速膨胀 但是数据库仍然使用是十年以前的架构体系 WiredTiger 尝试打破这一切 充分利用多核与大内存时代来重新设计数据库引擎 达到 7 10 倍写入性能提升 本文由袁荣喜向 高可用架构 投稿 通
  • order by与索引

    ORDER BY 通常会有两种实现方法 一个是利用有序索引自动实现 也就是说利用有序索引的有序性就不再另做排序操作了 另一个是把结果选好之后再排序 用有序索引这种 当然是最快的 不过有一些限制条件 来看下面的测试 测试数据 student表
  • Matplotlib数据可视化

    e 安装及使用 安装 pip install i https mirrors aliyun com pypi simple matplotlib 使用 import Matplotlib pyplot as plt 操作需要numpy数据对