数据可视化复习2-绘制折线图+条形图(叠加条形图,并列条形图,水平条形图)+ 饼状图 + 直方图
目录
目录
一、绘制折线图
1.使用pyplot
2.使用numpy
编辑
3.使用DataFrame
编辑
二、绘制条形图(柱状图)
1.简单条形图
2.绘制叠加条形图
3.绘制并列条形图
4.水平条形图
编辑
三、绘制饼状图
四、绘制散点图和直方图
1.散点图
2.直方图
一、绘制折线图
1.使用pyplot
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [1,2,3,4,5]
# 调用绘制线性图函数plot
plt.plot(x,y,color='#3589FF', # 线的颜色linestyle=':', # 线的风格linewidth=2, # 线的宽度marker='o', # 标记点样式markerfacecolor='r',# 标记点颜色markersize=10, # 标记点的大小alpha=1, # 图形的透明度label="x=y" # 设置图例的label
)
plt.legend()
plt.show()

2.使用numpy
import numpy as np
plt.rcParams['font.sans-serif'] = "SimSong"
# numpy数据
y1 = np.random.random(6) # 第1条折线y轴
y2 = np.random.random(6) # 第2条折线y轴
x = np.arange(6) # 公用的x轴plt.plot(x, y1, label='成都') # 绘制第1条折线图
plt.plot(x, y2, label='武汉') # 绘制第2条折线图
plt.legend(loc='best') # 显示折线plt.title('各城市房价(单位: 万)', fontsize=20) # 设置标题 和 标题大小
index_name = ['1月', '2月', '3月', '4月', '5月', '6月'] # 设置刻度
plt.xticks(x, index_name) # 将x坐标刻度数值与字符对应plt.show() # 显示图形
其中,这句代码的效果是,它将x数组中的数值与index_name列表中的字符串对应起来,并显示在图表的x轴上。这样,图表的x轴上将显示’1月’、‘2月’、‘3月’、‘4月’、‘5月’和’6月’,而不是默认的数值刻度。这对于增强图表的可读性和直观性非常有用,特别是当x轴代表时间序列时
index_name = ['1月', '2月', '3月', '4月', '5月', '6月'] # 设置刻度
plt.xticks(x, index_name) # 将x坐标刻度数值与字符对应
如果没有这段代码会发生

3.使用DataFrame
import pandas as pd
# 使用DataFrame数据
data_frame = pd.DataFrame({'Python基础': np.random.randint(10, 100, 5),'Python爬虫': np.random.randint(10, 100, 5),'Python Web': np.random.randint(10, 100, 5),
})plt.plot(data_frame, marker='o')# 显示图例
plt.legend(data_frame, loc=2)# 设置x轴刻度标签
plt.xticks([0, 1, 2, 3, 4], ['1月', '2月', '3月', '4月', '5月'])
plt.title('2020年课程购买人数')
plt.xlabel('月份')
plt.ylabel('购买人数')# 设置网格的宽度
plt.grid()# 显示图形
plt.show()
二、绘制条形图(柱状图)
1.简单条形图
下面这段代码是使用matplotlib库中的pyplot模块绘制条形图
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
参数:
| 参数名 | 描述 | 默认值 |
|---|---|---|
| x | 条形图x轴的位置序列,即条形图基线的位置。 | 无(必须提供) |
| height | 条形图y轴的值,即条形图的高度。 | 无(必须提供) |
| width | 条形图的宽度。 | 0.8 |
| bottom | 条形图的底部y坐标,表示条形图从哪个y坐标开始。 | None |
| align | 条形图的对齐方式,'center’表示条形图中心对齐,'edge’表示边缘对齐。 | ‘center’ |
| data | 要绘制的数据。 | None |
| **kwargs | 传递给条形图的其它参数,如颜色、标签等。 | 无 |
绘制一个简单的条形图
x = [1,2,3,4,5]
height = [2.5,3.5,4.5,5.6,6.9]
plt.bar(x,height)

给条形图上方添加说明
# 给坐标为 (1,2.5)位置上方添加2.5说明
plt.text(1,2.5,2.5)

# 使这个说明居中,并且在条形图底部
plt.text(1,2.5,2.5,ha='center',va='bottom') #通常使用bottom
# 使这个说明居中,并且在条形图上部
plt.text(1,2.5,2.5,ha='center',va='top')


# 给每个条形图添加说明,使用zip
# zip 的作用就是将x和height 合并成一个元组,通过for循环赋值给x,height
for x,height in zip(x,height):plt.text(x,height,height,ha='center',va='bottom')

补充元素
x = [1,2,3,4,5]
height = [2.5,3.5,4.5,5.6,6.9]
index_name = ['星期一','星期二','星期三','星期四','星期五']
plt.xticks(x,index_name)
plt.bar(x,height)
plt.title('销售量(单位:万元)')
for x,height in zip(x,height):plt.text(x,height,height,ha='center',va='bottom')
plt.show()

2.绘制叠加条形图
x = [1,2,3,4,5]
height1 = [2.5,3.5,4.5,5.6,6.9]
height2 = [2,3,4,5,6]
index_name = ['星期一','星期二','星期三','星期四','星期五']
plt.xticks(x,index_name)
plt.bar(x,height1) # 绘制第一个条形图
plt.bar(x,height2,color='g') # 绘制第二个条形图
plt.title('销售量(单位:万元)')
plt.show()

bottom参数用于指定堆叠条形图的起始位置
在下面的例子中,bottom=height1表示第二个条形图的底部是第一个条形图的顶部
plt.bar(x,height1,label='python销量') # 绘制第一个条形图
#
plt.bar(x,height2,color='g',bottom=height1,label='c语言销量') # 绘制第二个条形图
plt.legend()

设置图形大小和图形像素,这样图片就更大一些了
plt.figure(figsize=(8,8),dpi=100)

测试代码
plt.figure(figsize=(8,8),dpi=100)
x = [1,2,3,4,5]
height1 = [2.5,3.5,4.5,5.6,6.9]
height2 = [2,3,4,5,6]
index_name = ['星期一','星期二','星期三','星期四','星期五']
plt.xticks(x,index_name)
plt.bar(x,height1,label='python销量') # 绘制第一个条形图
plt.bar(x,height2,color='g',bottom=height1,label='c语言销量') # 绘制第二个条形图
plt.title('销售量(单位:万元)')
plt.legend()
plt.show()
3.绘制并列条形图
这里就需要使用numpy,便于相减
注意plt.bar中参数顺序
plt.figure(figsize=(8,8),dpi=100)# 使用numpy
x = np.arange(5)
height1 = [2.5,3.5,4.5,5.6,6.9]
height2 = [2,3,4,5,6]
index_name = ['星期一','星期二','星期三','星期四','星期五']
plt.xticks(x,index_name)#条形图宽度为0.3
bar_width=0.3
plt.bar(x,height1,bar_width,label='python销量') # 绘制第一个条形图# 第二个条形图其实位置为x+bar_width
plt.bar(x+bar_width,height2,bar_width,color='g',label='c语言销量') # 绘制第二个条形图
plt.title('销售量(单位:万元)')
plt.legend()
plt.show()

但是底部的x轴课表对应不美观,于是调一下xticks
plt.xticks(x+bar_width/2,index_name) # 加bar_width的一半

实验代码
plt.figure(figsize=(8,8),dpi=100)# 使用numpy
x = np.arange(5)
height1 = [2.5,3.5,4.5,5.6,6.9]
height2 = [2,3,4,5,6]
index_name = ['星期一','星期二','星期三','星期四','星期五']#条形图宽度为0.3
bar_width=0.3
plt.bar(x,height1,bar_width,label='python销量') # 绘制第一个条形图# 第二个条形图其实位置为x+bar_width
plt.bar(x+bar_width,height2,bar_width,color='g',label='c语言销量') # 绘制第二个条形图
plt.title('销售量(单位:万元)')plt.xticks(x+bar_width/2,index_name) # 加bar_width的一半
plt.legend()
plt.show()
4.水平条形图
plt.figure(figsize=(8,8),dpi=100)
index_name = ['python','c语言','java','cpp','php']
y = [1,2,3,4,5]
plt.yticks(y,index_name)
width=[2.5,3.6,4.7,5.8,6.9]# barh以水平方式画条形图,h就是水平的意思
plt.barh(y,width)plt.text(2.5,1,2.5)
plt.text(3.6,2,3.6)
plt.text(4.7,3,4.7)
plt.text(5.8,4,5.8)
plt.text(6.9,5,6.9)plt.show()
三、绘制饼状图
import matplotlib.pyplot as plt # 导入matplotlib.pyplot模块,用于绘制图表plt.figure(figsize=(6, 6), dpi=100) # 创建一个新图形,并设置图形大小为6x6英寸,分辨率为100 DPI
labels = ['A', 'B', 'C', 'D', 'E'] # 定义饼图的标签列表
x = [10, 20, 30.5, 40.6, 50.7] # 定义饼图的各个部分的值
explode = [0, 0.1, 0, 0, 0] # 定义饼图各个部分的突出显示程度,这里只突出显示第二个部分plt.pie(x, labels=labels, autopct='%.2f%%', explode=explode) # 绘制饼图,设置标签、自动百分比格式和突出显示
plt.legend() # 显示图例,用于解释各个部分的含义
plt.show() # 显示绘制好的饼图
其中对于pie函数内部,如果参数顺序对不上,可以强行指定参数顺序如 labels=labels

四、绘制散点图和直方图
1.散点图
我们可以通过绘制折线图方式绘制一个简单的散点图
x = [1,2,3,4,5]
y = [1,2,3,4,5]
plt.plot(x,y)

# 设置点的样式为o,颜色为红色
plt.plot(x,y,'ro')
# bo就是蓝色
除了通过折线图绘制散点图外。matplotlib中还提供了scatter函数绘制散点图
plt.scatter 是 Matplotlib 库中的一个函数,用于在二维空间中绘制散点图。
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, *, data=None, **kwargs)
| 参数名 | 描述 | 示例值或默认值 |
|---|---|---|
| x, y | 这些是位置参数,分别表示散点图中每个点的 x 和 y 坐标。 | x = [1, 2, 3, …], y = [4, 5, 6, …] |
| s | 散点的大小。如果是一个标量,那么所有的点都会是这个大小。 | s = 100 |
| c | 散点的颜色。如果是一个标量,那么所有的点都会是这个颜色。 | c = ‘blue’ |
| marker | 散点的形状。默认值是 None,此时使用 ‘o’(圆形)。 | marker = ‘s’ |
| cmap | 颜色映射,用于将数据值映射到颜色。仅在 c 是一个浮点数数组时使用。 | cmap = plt.cm.viridis |
| norm | 用于缩放 c 的颜色数据,使其在 0 和 1 之间。 | norm = plt.Normalize(vmin=0, vmax=1) |
| vmin, vmax | 当 norm 是 None 时,这两个参数用于将 c 的数据缩放到颜色映射的范围内。 | vmin = 0, vmax = 1 |
| alpha | 散点的透明度。值在 0(完全透明)到 1(完全不透明)之间。 | alpha = 0.5 |
| linewidths | 散点边缘的线宽。默认值是 None,此时不绘制边缘。 | linewidths = 1 |
| edgecolors | 散点边缘的颜色。默认值是 None,此时边缘颜色与散点颜色相同。 | edgecolors = ‘black’ |
| data | 如果提供,那么 x, y, s, c 等参数可以通过字符串来指定,这些字符串将映射到 data 的列。 | data = None |
| **kwargs | 其他关键字参数,可以传递给 Line2D 对象,用于进一步自定义散点图。 | **kwargs = {} |
x = [1,2,3,4,5]
y = [1,2,3,4,5]
plt.scatter(x,y)
plt.show()

设置点的颜色为红色
plt.scatter(x,y,color='r')
# 设置散点图中点的大小 -- 随机大小
size = np.random.rand(5)*200
plt.scatter(x,y,color='g',s=size)

# 绘制多个散点图
x = [1,2,3,4,5]
y = [1,2,3,4,5]
a = np.random.rand(10)
b = np.random.rand(10)
size = np.random.rand(5)*200
plt.scatter(x,y,color='y',s=size)
plt.scatter(a,b,color='b',s=size)
plt.show()

2.直方图
直方图是一种用于显示数值数据分布的柱状图。它通过将数据分成若干个区间(或称为“箱子”),然后绘制每个区间内数据的数量或频率来表示数据的分布情况。直方图可以用来展示数据的集中趋势、离散程度以及是否存在异常值等。
直方图是由竖立在x轴上的多个相邻的矩形组成,这些矩形把x轴拆分为一段段彼此不重叠的线段;每个矩形都是有面积的,那么它的面积和所对应的直方图元素的个数是成正比,这种方法就可以用于样本分布统计
x = [1,2,3,4,5]
plt.hist(x) # 绘制直方图
plt.show()

# 更改x的值观察一下
x = [1,2,3,4,5,1.1,1.2,1.3]
plt.hist(x) # 绘制直方图
plt.show()

# 下面使用直方图绘制一个正态分布
# 使用 NumPy 的 random.normal 函数生成一个包含 100000 个随机数的数组。normal(0,1) 表示生成的数据符合均值为 0、标准差为 1 的正态分布。
data = np.random.normal(0,1,100000)
# bins=200 指定了直方图的箱数,即横轴(x轴)的划分数量。每个箱代表数据中一个范围的数据值,直方图的高度表示该范围内数据点的数量。
plt.hist(data,bins=200)
plt.show()

相关文章:
数据可视化复习2-绘制折线图+条形图(叠加条形图,并列条形图,水平条形图)+ 饼状图 + 直方图
目录 目录 一、绘制折线图 1.使用pyplot 2.使用numpy 编辑 3.使用DataFrame 编辑 二、绘制条形图(柱状图) 1.简单条形图 2.绘制叠加条形图 3.绘制并列条形图 4.水平条形图 编辑 三、绘制饼状图 四、绘制散点图和直方图 1.散点图 2…...
JavaScript原生深拷贝方法 structuredClone使用
structuredClone 简介 structuredClone 是现代浏览器提供的原生 JavaScript 方法,用于深拷贝对象。它可以处理各种复杂数据结构,包括嵌套对象、数组、Date、Map、Set 等,且支持循环引用。 语法 const clone structuredClone(value);value:…...
SpringBoot无法使用jkd8问题
1. 解决SpringBoot无法使用jdk8问题 创建一个高 jkd 版本,如 jkd21 在创建项目后,将 pom.xml中的 jdk 版本改为8,找到下图所在位置修改即可。 此外将 SpringBoot 的版本修改为 2 开头的 如2.7.4 ,然后 刷新 Maven 项目即可。 在 …...
使用 Jina Embeddings v2 在 Elasticsearch 中进行后期分块
作者:来自 Elastic Gustavo Llermaly 在 Elasticsearch 中使用 Jina Embeddings v2 模型并探索长上下文嵌入模型的优缺点。 在本文中,我们将配置和使用 jina-embeddings-v2,这是第一个开源 8K 上下文长度嵌入模型,首先使用 semant…...
QT简易项目 数据库可视化界面 数据库编程SQLITE QT5.12.3环境 C++实现
案例需求: 完成数据库插入,删除,修改,查看操作。 分为 插入,删除,修改,查看,查询 几个模块。 代码: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget…...
python json.dump()和json.dumps()的区别
用人话总结一下 json.dump()是针对文件的json和python的转换 json.dumps()主要是针对内容数据 json.dumps(obj, skipkeysFalse, ensure_asciiTrue, check_circularTrue, allow_nanTrue, clsNone, indentNone, separatorsNone, encoding“utf-8”, defaultNone, sort_keysFalse…...
网络流学习笔记
注:笔者是蒟蒻,所以本文几乎是干货,枯燥无味甚至可能会引人不适,请读者谨慎阅读。 为了笔者快爆掉的肝点个赞好吗??? Part.1 网络流基础定义 一个有向带权图 G ( V , E ) G(V,E) G(V,E) 是…...
Mybatis PLUS查询对List使用OR模糊查询
Mybatis PLUS查询对List使用OR模糊查询 1、版本2、代码3、效果 1、版本 Mybatis PLUS版本:3.5.7 注意:版本3.1.2及以下是需要return的 因当前为高版本,代码中已将 return 注释。 2、代码 QueryWrapper<Object> queryWrapper new Que…...
Debezium日常分享系列之:Debezium Engine
Debezium日常分享系列之:Debezium Engine 依赖打包项目在代码中输出消息格式消息转换消息转换谓词高级记录使用引擎属性异步引擎属性数据库模式历史属性处理故障 Debezium连接器通常通过部署到Kafka Connect服务来运行,并配置一个或多个连接器来监视上游…...
I.MX6U 裸机开发20. DDR3 内存知识
I.MX6U 裸机开发20. DDR3 内存知识 一、DDR3内存简介1. DDR发展历程SRAMSDRAMDDR1DDR2DDR3DDR4DDR5 2. 开发板资源3. DDR3的时间参数1. 传输速率2. tRCD3. CL 参数作用取值范围工作原理4. tRC参数原理单位与取值5. tRAS重要性及作用 二、I.MX6U MMDC 控制器1. MMDC简介…...
【R安装】VSCODE安装及R语言环境配置
目录 VSCODE下载及安装VSCODE上配置R语言环境参考 Visual Studio Code(简称“VSCode” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器&…...
ES更新问题 Failed to close the XContentBuilder异常
问题描述 使用RestHighLevelClient对文档进行局部更新的时候报错如下: Suppressed: java.lang.IllegalStateException: Failed to close the XContentBuilderat org.elasticsearch.common.xcontent.XContentBuilder.close(XContentBuilder.java:1011)at org.elast…...
svn-git下载
windows: svn 客户端:-------------- TortoiseSVN 安装 下载地址:https://tortoisesvn.net/downloads.html, 页面里有语言包补丁的下载链接。 目前最新版为 1.11.0 下载地址: https://osdn.net/projects/tortoisesvn/storage/1.…...
10个Word自动化办公脚本
在日常工作和学习中,我们常常需要处理Word文档(.docx)。 Python提供了强大的库,如python-docx,使我们能够轻松地进行文档创建、编辑和格式化等操作。本文将分享10个使用Python编写的Word自动化脚本,帮助新…...
Paddle Inference部署推理(十八)
十八:Paddle Inference推理 (C)API详解 3. 使用 CPU 进行预测 注意: 在 CPU 型号允许的情况下,进行预测库下载或编译试尽量使用带 AVX 和 MKL 的版本 可以尝试使用 Intel 的 MKLDNN 进行 CPU 预测加速,默…...
Redis开发02:redis.windows-service.conf 默认配置文件解析与注解
文件位置:redis安装目录下的 redis.windows-service.conf ,存放了redis服务的相关配置,下面列举出默认配置的含义: 配置项含义bind 127.0.0.1限制 Redis 只监听本地回环地址,意味着只能从本地连接 Redis。protected-m…...
redis大key和热key
redis中大key、热key 什么是大key大key可能产生的原因大key可能会造成什么影响如何检测大key如何优化删除大key时可能的问题删除大key的策略 热key热key可能导致的问题解决热key的方法 什么是大key 大key通常是指占用内存空间过大或包含大量元素的键值对。 数据量大ÿ…...
Dubbo 最基础的 RPC 应用(使用 ZooKeeper)
看国内的一些项目时 Dubbo 这个词经常闪现,一直也不以为然,未作搜索,当然也不知道它是做什么用的。直到最近阅读关于大型网站架构相关的书中反复提到 Dubbo 后,觉得不能再对它视而不见。Google 了一下,它是在阿里巴巴创…...
科技赋能:企业如何通过新技术提升竞争力的策略与实践
引言 在当今瞬息万变的商业环境中,科技的迅猛发展正在重新定义行业的游戏规则。无论是小型企业还是跨国巨头,都感受到数字化转型的迫切需求。过去,企业竞争力更多依赖于成本控制、资源调配或市场覆盖,而如今,新技术的引…...
从0开始深度学习(33)——循环神经网络的简洁实现
本章使用Pytorch的API实现RNN上的语言模型训练 0 导入库 import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import Dataset, DataLoader from collections import Counter import re import math from tqdm import tqdm1 准备数据 …...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...



