第五章. 可视化数据分析图表—综合应用(双y轴,堆叠柱形图,颜色渐变饼形图,等高线图)

news2024/12/29 14:29:44

第五章. 可视化数据分析图

5.7 综合应用

1.双Y轴可视化数据分析图表的实现 (柱形图+折线图)

双y轴,顾名思义就是两个y轴,可以通过双y轴看出发展情况的同时,还可以看到正常速度。

1).注意:

add_subplot一定要放在创建画布(matplotlib.pyplot.figure)之后,其他操作之前,放在后面可能会出现双坐标轴的情况

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

import matplotlib.pyplot as plt
import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet5')
print(df)

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 创建画布
fig = plt.figure(figsize=(8, 6))

# add_subplot一定要放在前面,放在后面会出现双坐标轴的情况
ax1 = fig.add_subplot(1, 1, 1)

# 创建标题
plt.title("销量情况对比")

# 双Y轴可视化数据分析图表的实现
# 柱形图
ax1.bar(x=df['书名'], height=df['销量(本)'], width=0.5, label='left')
ax1.set_xlabel("书名")
ax1.set_ylabel("销量(本)")

# 折线图
ax2 = ax1.twinx()#共享x轴,添加一条y轴坐标轴
ax2.plot(df['书名'], df['增量(%)'], color='black', linestyle='--', linewidth=1, marker='o', label=u'增量')
ax2.set_ylabel("增长量(%)")

# 设置文本标签
for x, y in zip(df['书名'], df['增量(%)']):
    ax2.text(x, y, '%.2f' % y, ha='center', va='bottom', fontsize=10, color='r')

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

2.堆叠柱形图可视化数据分析图表的实现

堆叠柱形图可以直观,贴切的反应不同产品,不同人群的体验效果。

1).示例:

Excel中的数据:
在这里插入图片描述
代码:

import pandas as pd
import matplotlib.pyplot as plt

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet2')
print(df)

# 设置画布
fig = plt.figure(figsize=(8, 6), facecolor='y')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# X,Y轴刻度线的显示方向
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'

x_label = df['姓名']

# # 柱形图
# x_label = np.arange(len(x_label))  # x轴刻度标签位置
width = 0.35  # 柱子的宽度

plt.bar(x_label, df['生物'], width=width, color='orange')
plt.bar(x_label, df['化学'], width=width, color='skyblue', bottom=df['生物'])

# 设置网格线
plt.grid(axis='y', color='0.5', linestyle='--', linewidth=1)

# 设置x,y轴坐标
plt.xlabel('姓名')
plt.ylabel('分数')

# # 设置坐标轴刻度
plt.xticks(x_label, df['姓名'])
plt.yticks(range(0, 201, 10))

# 设置文本标签
for x, y in zip(x_label, df['生物']):
    plt.text(x, y, '%.1f' % y, ha='center', va='baseline', fontsize=10, color='g')

for x, y, z in zip(x_label, df['生物'], df['化学']):
    plt.text(x, y+z, '%.1f' % z, ha='center', va='baseline', fontsize=10, color='r')

# 设置标题和图例
plt.title('成绩统计表')

# 设置图标图例
plt.legend(['生物', '化学'],
           loc='upper right')  # 手动添加图例时,有时文本会显示不全,在文本后面加一个逗号(,)可解决,例如('图书采购价目',)

# 调整图表与画布边缘间距
plt.subplots_adjust(left=0.15, bottom=0.15, right=0.9, top=0.9)

# 坐标轴的刻度线向内显示还是向外显示
plt.tick_params(left=True, bottom=True, right=False, top=False)

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

3.颜色渐变饼形图的实现

根据所占比例自动配置渐变色,占比越大颜色越深,占比越小颜色越浅。

1).示例1:

Excel中的数据:
在这里插入图片描述
代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib import font_manager as fm

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet5')
print(df)

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 设置画布
fig, ax = plt.subplots(figsize=(8, 6), facecolor='w')

# 饼图的颜色配置:颜色地图:秋天->彩虹->灰色->春天->黑色
colors = cm.rainbow(np.arange(len(df['销量(本)']))/ len(df['销量(本)']))

# 立体感带阴影的饼形图
patches, texts, autotexts = ax.pie(df['销量(本)'], labels=df['书名'], labeldistance=1.1, autopct='%.2f%%',
                                   startangle=90,
                                   shadow=True,
                                   radius=0.8, center=(0, 0), textprops={'fontsize': 9, 'color': 'k'}, pctdistance=0.6,
                                   colors=colors)

ax.axis('equal')

# 重新设置字体颜色
proptease = fm.FontProperties()

# 字体大小:从小到大
proptease.set_size("small")

# 设置属性
plt.setp(autotexts, fontproperties=proptease)
plt.setp(texts, fontproperties=proptease)

# 设置标题和图例
ax.set_title('销量占比')

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

4.等高线图的实现 (matplotlib.pyplot.contourf)

等高线图是在地理课中讲述山峰山谷时绘制的图形中,在机器学习中也会被用在绘制梯度下降算法的图像中。

1).关键代码解析:

画等高线的核心函数时Matplotlib的contourf函数,但设个函数中的参数x,y对应的值是二位数据,需要使用Numpy的meshgrid方法,将x,y转换成二维数据,np.meshgrid(x,y)

2).示例:

代码:

import numpy as np
import matplotlib.pyplot as plt


def f(x, y):
    return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)


# 设置画布
fig = plt.figure(figsize=(8, 6), facecolor='w')

# 生成x,y的数据
space = 256
x = np.linspace(-4, 4, space)
y = np.linspace(-4, 4, space)

# 把x,y转换为二维数据
X, Y = np.meshgrid(x, y)

# 绘制等高线
plt.contourf(X, Y, f(X, Y))

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

注意:代码中所涉及到的函数和参数,在图表的常用设置1 和 图表的常用设置2 有所介绍

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

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

相关文章

【自学Python】Python2代码转Python3代码

Python2代码转Python3代码 Python2代码转Python3代码教程 由于 Python 存在 Python2 和 Python3 两个主要的版本方向,经常会有将 Python2 的代码转到 Python3 的环境下运行的需求。 尤其是跑一些神经网络的代码时有很多是在 Python2 的环境下写的。在 Python3 下…

EXCEL的查找:如何按 行号+列号 进行查询

0 首先用match()等取得行号,列号 如果想根据行号列号,精确查找,另外一个区域的数据,可以用如下方法 INDIRECT("Sheet2!r"&MATCH($C11,Sheet2!$A:$A,0)&"C"&MATCH(D$10,Sheet2!$1:$1,0),FALSE) …

使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus)

vite官网 一:初始化项目 1.需要在创建项目的位置cmd目录下执行 2. npm init vitelatest 回车 npm init vitelatest3.填上自己的项目名称 回车 4.选择vue 回车 5.选择TypeScript回车 6.项目创建完成 或者一步到位通过附加的命令行选项直接指定项目名称和你想要使用的…

网络流量监控为某图书馆系统排忧解难(一)

前言 某学校图书馆信息中心老师反应,用户反馈系统有访问慢的情况,需要通过流量分析系统来了解图书馆系统的运行情况,此报告专门针对图书馆系统的性能数据做了分析。 信息中心已部署NetInside流量分析系统,使用流量分析系统提供实…

PB数据库开发技术(七)-PowerBuilder小型数据库应用系统开发

PowerBuilder小型数据库应用系统开发 实验目的 利用前面学过的知识设计一个“图书馆管理系统”,从而进一步掌握powerbuilder数据库开发的基本步骤和方法。 二.实验步骤 建立数据库“图书管理系统”,向数据库中添加操作员表、借书还书表、图书表以及相应数据

Unity 项目中怎样正确的使用 Lua?

(图源siki学院-狸墨老师) 什么是Lua Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。可以方便的与c/c进行相互调用。但…

Redis:二、Redis常见命令

2. Redis常见命令 2.1 Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样 Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( http://www.redis.cn/…

【JAVA进阶】常用API

📃个人主页:个人主页 🔥系列专栏:JAVASE基础 目录 1.API概述 2.Object类 3.Objects 4.StringBuilder 5.日期与时间 Date 类 SimpleDateFormat Calendar 6.JDK8新增日期类 1.API概述 什么是API? API(Application Program…

Kettle(二)数据同步、迁移(基础版)

目录 1.配置源数据库A 1.1 文件-->数据库连接 1.2 配置数据库,选择自己的数据库并配置。 1.3 数据库配置可能会报错,原因是缺少数据库驱动 2.配置目标数据库(与源数据库一致) 3.数据迁移(举例) 3.…

IntelliJ IDEA的代码搁置功能

使用场景 当遇到需要临时修改的 bug,但当前正在开发的内容不能删掉,这个时候就需要把当前已经开发的代码另外保存下来(即保存现场),当把 bug 改完后再恢复,来回归之前的开发工作,IntelliJ IDEA…

数据可视化系列-02各类图表的综合使用介绍及实践

文章目录3.各类图表的综合使用介绍及实践3.1了解数据功能图1、可视化中的数据2、基于数据的研究3、数据的可视化组件4、可视化图表的作用、制作流程和类型3.2北极星指标展示1、指标类知识回顾:指标类简介、指标类主要场景2、指标类图表:指标看板、指标趋…

Win11的两个实用技巧系列之更新进度条不动的三种解决方法、重置失败未做更改五种解决方法

目录 Win11更新进度条不动怎么办?Win11更新进度条不动的三种解决方法 方法一: 方法二: 方法三: Win11重置失败未做更改怎么办?Win11重置失败未做更改五种解决方法 方法一、重新启用Windows RE 方法二、使用SFC修复系统文件 方法三、从恢复…

java忽略证书验证(兼容http,https)

概述 日常上传、下载文件时可能有不需要验证证书的场景,比如证书过期、不正确之类的也可以正常的上传下载文件。 Java中使用https协议时,是通过X.509证书进行校验的。 首先我们先了解下什么是X.509证书。 什么是X.509证书 X.509是公钥基础设施&#x…

k8s部署prometheus

k8s部署prometheus 1.下载prometheus文件 cd /soft/src git clone -b release-0.5 --single-branch https://github.com/coreos/kube-prometheus.git2.部署 这里部署之前最好改一下alertmanager-alertmanager.yaml这个文件,将replicas:改成2或者3,当为…

Spark 3.0 - 17 ML PCA 主成分分析理论与实战

目录 一.引言 二.PCA 理论 1.主成分分析定义 2.数学基础 A.数据归一化 B.协方差矩阵计算 C.计算协方差矩阵的特征向量和特征值,以识别主成分 D.构造特征向量矩阵 E.沿着主成分轴重新计算数据 三.PCA 实战 1.数据准备 2.PCA 初始化 3.数据降维 四.总结 …

举一反三-自建zabbix监控php

php-fpm监控需要通过nginx服务。因此需要开启相关配置。 php-fpm如果是yum安装的,那么在/etc/php-fpm.d/www.config中编辑如下选项: pm.status_path /php_status 保存并退出编辑。重启php-fpm服务。 接下来编辑nginx配置项。编辑如下: l…

Linux下cal命令C/C++实现(显示日历信息)

大多数用户自然会将计算机上的日历视为GUI应用程序,或直接从桌面显示的东西。但也可以在Linux中使用cal命令通过命令行终端查看日历。 如果您通常使用Linux上的桌面环境,或者您来自Windows或MacOS操作系统,可能会认为这是一种过于复杂的日历…

RFID技术在固定资产管理中的作用

固定资产因具有数量庞大、分布广、变动频繁等特点造成管理难度较大,一直成为企业管理的一大重点。固定资产管理包括资产的新增、调拨、闲置、报废、维修、盘点等操作,让投入使用到报废退出使用的全过程进行全面的信息化管控。以往固定资产的一直由于管理…

AlexNet详解

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 ✨完整代码在我的github上,有需要的朋友可以康康✨ GitHub - tt-s-t/Deep-Learning: Store some of your own in-depth …

Python学习笔记——起步

Python 2 和 Python 3的区别 一、维护及版本更新不同 官方通知python2 2020开始已不再维护,python3的版本还在不断迭代更新 。 因为python2官方不再维护且python3的广泛使用,很多新的算法包、AI包等其他功能模块包都是基于python3开发的,p…