数据可视化复习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 准备数据 …...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...