python数据分析——matplotlib可视化基础

news2024/11/27 6:12:57

参考资料:活用pandas库

# 导入库
import pandas as pd
import matplotlib.pyplot as plt
# 导入数据
anscombe=pd.read_csv(r"...\seaborn常用数据案例\anscombe.csv")
anscombe.head()

        大多数基本图表的名字以plt.plot开头。

# 创建数据子集
# 只包含数据集Ⅰ
dataset_1=anscombe[anscombe['dataset']=='I']
plt.plot(dataset_1.x,dataset_1.y)

        默认情况下,plt.plot用于画线。如果想用它画圆点,可以给plt.plot传递一个“o”参数。

# 绘制点图
plt.plot(dataset_1.x,dataset_1.y,"o")

        当然,也可以对anscombe数据集的其余数据重复该过程。matplotlib可以指定最终图的维数,根据指定的维数放入更小的子图表。通过这种方式,可以在单幅图中显示结果,而不必分成多幅图。

        subplot方法有3个参数:子图的行数、子图的列数、子图的位置。子图的位置是按顺序编号的,先从左到右,在从上到下。示例如下

# 创建画布,用于放置子图
fig=plt.figure()
# 指定子图的排布方式
# 本例,子图共有2行,每行2幅子图
# 子图有2行2列,位置是1
axes1=fig.add_subplot(2,2,1)
# 子图有2行2列,位置是2
axes2=fig.add_subplot(2,2,2)
# 子图有2行2列,位置是3
axes3=fig.add_subplot(2,2,3)
# 子图有2行2列,位置是4
axes4=fig.add_subplot(2,2,4)

        用上述方法绘制anscombe数据集的4个子图:

# 创建anscombe数据的其余数据集
dataset_2=anscombe[anscombe["dataset"]=="II"]
dataset_3=anscombe[anscombe["dataset"]=="III"]
dataset_4=anscombe[anscombe["dataset"]=="IV"]
# 在上面建立的4个空的轴域中绘制点图
axes1.plot(dataset_1.x,dataset_1.y,"o")
axes2.plot(dataset_2.x,dataset_2.y,"o")
axes3.plot(dataset_3.x,dataset_3.y,"o")
axes4.plot(dataset_4.x,dataset_4.y,"o")

        最后,向各个子图添加标签,并使用tight_layout方法确保各个坐标轴彼此分开。

# 向各幅子图添加子标题
axes1.set_title("dataset_1")
axes2.set_title("dataset_2")
axes3.set_title("dataset_3")
axes4.set_title("dataset_4")
# 为整幅图田间一个大标题
fig.suptitle('Anscombe Data')
# 使用紧凑布局
fig.tight_layout()

        anscombe数据可视化阐明了为什么只看汇总统计值会产生误导。当把这些点可视化后,即使每个数据集有相同的汇总统计值,不同数据集的点之间的关系也相差较大。

        为了让anscombe数据图更完整,可以使用set_xlabel()和set_ylabel()向每个子图添加x轴标签和y轴标签。

        在python有关绘图的内容中,注意区分“axis”(坐标轴)和“axes”(轴域)的区别。

 1、使用matplotlib绘制统计图

# 导入库
import pandas as pd
import matplotlib.pyplot as plt
tips=pd.read_csv(r"...\seaborn常用数据案例\tips.csv")
print(tips.head())

(1)直方图是通过观察单个变量最常用的方法。这些值是经过“装箱”(bin)处理的,这意味着将它们分组后绘制成图来显示变量的分布情况。

fig=plt.figure()
axes1=fig.add_subplot(1,1,1)
axes1.hist(tips["total_bill"],bins=10)
axes1.set_title("Histogram of Total Bill")
axes1.set_xlabel("Frequency")
axes1.set_ylabel("Total Bill")
fig.show()

(2)散点图用于表示一个连续变量随另一个连续变量的变化所呈现的大致趋势。

scatter_plot=plt.figure()
axes1=scatter_plot.add_subplot(1,1,1)
axes1.scatter(tips['total_bill'],tips['tip'])
axes1.set_title("Scatterplot of Total Bill vs Tip")
axes1.set_xlabel("Total Bill")
axes1.set_ylabel("Tip")
scatter_plot.show()

(3)箱线图用于展示一个离散变量随连续变量的变化而呈现的分布状况。

box_plot=plt.figure()
axes1=box_plot.add_subplot(1,1,1)
axes1.boxplot(
    # 箱线图的第一个参数是数据
    # 由于要绘制多块数据,因此必须把每块数据放入列表中
    [
        tips[tips['sex']=='Female']['tip'],
        tips[tips['sex']=='Male']['tip']
    ],
    # 然后可以传入一个可选的标签参数,用来标记传递的数据
    labels=['Female','Male']
)
axes1.set_title("Boxplot of Tips by Sex")
axes1.set_xlabel('Sex')
axes1.set_ylabel('Tip')
boxplot.show()

(4)如果想要表示更多变量则可以通过颜色或大小来区分。

# 基于性别创建一个带颜色的变量
def recode_sex(sex):
    if sex=="Female":
        return 0
    else:
        return 1
    
tips['sex_color']=tips['sex'].apply(recode_sex)
scatter_plot=plt.figure()
axes1=scatter_plot.add_subplot(1,1,1)
axes1.scatter(
    x=tips['total_bill'],
    y=tips['tip'],
    # 根据聚餐人数设置点的大小,乘以10以放大不同
    s=tips['size']*10,
    # 为sex设置颜色
    c=tips['sex_color'],
    # 设置alpha值,增加透明度,以表现重叠的点
    alpha=0.5
)
axes1.set_title("Total Bill vs Tip Colored by Sex and Sized by Size")
axes1.set_xlabel("Total Bill")
axes1.set_ylabel("Tip")
scatter_plot.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1668929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消息中间件Kafka(PHP版本)

小编最近需要用到消息中间件,有需要要复习一下以前的东西,有需要的自取,强调一点,如果真的想了解透彻,一定要动手,脑袋会了不代表就会写了 Kafka是由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅…

py黑帽子学习笔记_环境准备

1 下载os装os 下载一个kali虚机镜像然后用虚机管理软件创虚机,装完如下图,我用的版本是2024.1的版本kali-linux-2024.1-installer-amd64,可以从镜像站下载,官网下的慢还断网Index of /kali-images/kali-2024.1/ | 清华大学开源软…

AI 问答 API 对接说明

我们知道,市面上一些问答 API 的对接还是相对没那么容易的,比如说 OpenAI 的 Chat Completions API,它有一个 messages 字段,如果要完成连续对话,需要我们把所有的上下文历史全部传递,同时还需要处理 Token…

47岁古天乐唯一承认女友约「御用阿妈」过母亲节

日前关宝慧在IG晒出一张聚会照,并写道:「预祝各位#母亲节快乐🌹#dinner #happy #friends #好味」相中所见,前TVB金牌监制潘嘉德、卢宛茵、黄𨥈莹、黎萨达姆都有出席饭局。 当中黄𨥈莹身穿卡其色西装褛&…

【35分钟掌握金融风控策略24】定额策略实战

目录 基于客户风险评级的定额策略 确定托底额度和盖帽额度 确定基础额度 基于客户风险评级确定风险系数 计算最终授信额度 确定授信有效期 基于客户风险评级的定额策略 在开发定额策略时,精准确定客户的基础额度是一个关键步骤,通常会基于客户的收…

整体安全设计

人员和资产的安全是当今许多组织的最高优先事项之一。随着暴力事件在美国各地盛行——枪击事件、袭击、内乱等——建筑物业主必须为其建筑物及其居住者的安全做好计划。 为了创造一个安全的环境,新设施或园区的安全设计必须超越基本的摄像头和访问控制设备&#xf…

纯血鸿蒙APP实战开发——首页下拉进入二楼效果案例

介绍 本示例主要介绍了利用position和onTouch来实现首页下拉进入二楼、二楼上划进入首页的效果场景,利用translate和opacity实现动效的移动和缩放,并将界面沉浸式(全屏)显示。 效果图预览 使用说明 向下滑动首页页面超过触发距…

【Linux】centos7安装软件(rpm、yum、编译安装),补充:查找命令的相关文件路径,yum安装mysql

【Linux】技术上,Linux是内核。而术语上,我们通常说的Linux是完整的操作系统,其实称为"Linux发行版",是将Linux内核和应用系统打包,由不同的发行家族发行了不同版本。Linux发行版众多,主要有RedH…

HCIP-Datacom-ARST自选题库_07_割接【35道题】

一、单选题 1.在割接的测试阶段,符合以下哪一种情况的可以判断为割接成功? 网络承载的上层应用业务测试正常 网络设备的配置查看结果正常 网络流量路径正常 路由协议运行正常 2.在割接的测试阶段中,表明已经完成测试的标准是: IP设备的配置查看结…

org.postgresql.util.PSQLException: 错误: 关系 “dual“ 不存在

springboot 项目连接 postgreps,启动时报错 org.postgresql.util.PSQLException: 错误: 关系 "dual" 不存在。 查阅资料后发现这是由配置文件中的配置 datasource-dynamic-druid-validationQuery 导致的 spring:datasource:druid:stat-view-servlet:ena…

二叉树介绍

引入 定义 区别 定义不同 形态不同 基本形态

Ubuntu18.04解决有线网卡连接问题(不更新内核成功版)

https://www.realtek.com/Download/List?cate_id584 (需要翻一下) 不想自己去下载,直接去我资源里下载我上传的包就好啦(😂😂😂刚刚看了下别人下载要VIP还是自己去网站下很快的) 下载后解压,在…

FreeRTOS二值信号量

目录 一、信号量的概念 1、信号量的基本概念 2、信号量的分类 二、二值信号量简介 三、二值信号量相关API 1、创建二值信号量 2、释放二值信号量 3、获取二值信号量 四、二值信号量实操 1、实验需求 2、CubeMX配置 3、代码实现 一、信号量的概念 1、信号量的基本概…

从零开始的软件测试学习之旅(七)接口测试流程及原则案例

接口测试三要素及案例 接口测试介绍接口预定义接口测试的主要作用测试接口流程如下接口测试三要素接口测试分类RESTful架构风格RESTful架构三要素要素一要素二要素三 RESTful架构风格实现restful架构案例接口测试流程接口测试原则功能测试自动化测性能测试 复习复盘 接口测试介…

MYSQL:MySQL 事务隔离级别详解

一、MySQL事务是什么? MySQL事务是一组在数据库中执行的操作,这些操作要么全部成功执行,要么全部不执行,以确保数据库的完整性和一致性。 事务的 ACID 事务具有四个特征:原子性( Atomicity )、…

COX回归特征筛选

任务:利用cox筛选出P值小于0.05的特征 数据的格式第一列为标签,第二列为时间,第三列及后为特征 先想一想,想好了再更新 这里我们先举一个例子: import pandas as pd from lifelines import CoxPHFitter# 创建示例数…

【随笔】Git 高级篇 -- 远程跟踪分支 git checkout -b | branch -u(三十五)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

Github 2024-05-12 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目5Python项目2非开发语言项目2Vue项目1Rust项目1AFFiNE: 下一代知识库 创建周期:649 天开发语言:TypeScript协议类型:OtherSta…

2024最新最全【NMAP】零基础入门到精通

一、Nmap介绍 Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹识别、WAF识别及常见安全漏洞。它的图形化界面是Zenmap&#xff…

AJAX前端与后端交互技术知识点以及案例

Promise promise对象用于表示一个异步操作的最终完成(或失败)及其结果值 好处: 逻辑更清晰了解axios函数内部运作机制成功和失败状态,可以关联对应处理程序能解决回调函数地狱问题 /*** 目标:使用Promise管理异步任…