数据可视化复习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()

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

logback 初探学习

logback 三大模块 记录器(Logger)、追加器(Appender)和布局(Layout) 配置文件外层最基本的标签如图示 xml中定义的就是这个三个东西下面进入学习 包引入参考springboot 官方文档 Logging :: Spring Boo…

Linux:自定义Shell

本文旨在通过自己完成一个简单的Shell来帮助理解命令行Shell这个程序。 目录 一、输出“提示” 二、获取输入 三、切割字符串 四、执行指令 1.子进程替换 2.内建指令 一、输出“提示” 这个项目基于虚拟机Ubuntu22.04.5实现。 打开终端界面如图所示。 其中。 之前&#x…

《图像梯度与常见算子全解析:原理、用法及效果展示》

简介:本文深入探讨图像梯度相关知识,详细介绍图像梯度是像素灰度值在不同方向的变化速度,并以 “pig.JPG” 图像为例,通过代码展示如何选取图像部分区域并分析其像素值以论证图像梯度与边缘信息的关联。接着全面阐述了 Sobel 算子&#xff0c…

项目进度计划表:详细的甘特图的制作步骤

甘特图(Gantt chart),又称为横道图、条状图(Bar chart),是一种用于管理时间和任务活动的工具。 甘特图由亨利劳伦斯甘特(Henry Laurence Gantt)发明,是一种通过条状图来…

A045-基于spring boot的个人博客系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现

一、编码问题 在计算机编程中,流(Stream)是一种抽象的概念,用于表示数据的输入或输出。根据处理数据的不同方式,流可以分为字节流(Byte Stream)和字符流(Character Stream&#xff0…

Python爬虫项目 | 二、每日天气预报

文章目录 1.文章概要1.1 实现方法1.2 实现代码1.3 最终效果1.3.1 编辑器内打印显示效果实际应用效果 2.具体讲解2.1 使用的Python库2.2 代码说明2.2.1 获取天气预报信息2.2.2 获取当天日期信息,格式化输出2.2.3 调用函数,输出结果 2.3 过程展示 3 总结 1…

百度在下一盘大棋

这两天世界互联网大会在乌镇又召开了。 我看到一条新闻,今年世界互联网大会乌镇峰会发布“2024 年度中国互联网企业创新发展十大典型案例”,百度文心智能体平台入选。 这个智能体平台我最近也有所关注,接下来我就来讲讲它。 百度在下一盘大棋…

UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取

文章目录 1、前言2、在UG NX中创建平面和一个长方体,3、在UI Styler中创建一个UI界面4、在VS中创建一个工程4.1 创建并添加工程文件4.2 在Update_cb方法中添加选择平面的代码4.3 编译完成并测试效果1、前言 在采用NXOpen C++进行二次开发时,采用Menu/UIStyler是一种很常见的…

【软考】数据库

1. 数据模型 1.1 概念数据模型 概念数据模型一般用 E-R 图表示,常用术语如下: 实体:客观存在的事物,如:一个单位、一个职工、一个部门、一个项目。属性:学生实体有学号、姓名、出生日期等属性。码&#…

【强化学习的数学原理】第04课-值迭代与策略迭代-笔记

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰 文章目录 一、值迭代算法二、策略迭代算法三、截断策略迭代算法四、本节课内容summary 一、值迭代算法 值迭代算法主要包括两部分。 第一…

jupyter notebook的 markdown相关技巧

目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点:一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果:加粗,斜体&#x…

Spring Boot3远程调用工具RestClient

Spring Boot3.2之后web模块提供了一个新的远程调用工具RestClient,它的使用比RestTemplate方便,开箱即用,不需要单独注入到容器之中,友好的rest风格调用。下面简单的介绍一下该工具的使用。 一、写几个rest风格测试接口 RestCont…

vscode可以编译通过c++项目,但头文件有红色波浪线的问题

1、打开 VSCode 的设置,可以通过快捷键 Ctrl Shift P 打开命令面板,然后搜索并选择 “C/C: Edit Configurations (JSON)” 命令,这将在 .vscode 文件夹中创建或修改 c_cpp_properties.json 文件 {"configurations": [{"name…

近源渗透|HID ATTACK从0到1

前言 对于“近源渗透”这一术语,相信大家已经不再感到陌生。它涉及通过伪装、社会工程学等手段,实地侵入企业办公区域,利用内部潜在的攻击面——例如Wi-Fi网络、RFID门禁、暴露的有线网口、USB接口等——获取关键信息,并以隐蔽的…

Python爬取豆瓣电影全部分类数据并存入数据库

在当今数字化的时代,网络上丰富的影视资源信息吸引着众多开发者去挖掘和利用。今天,我就来和大家分享一段有趣的代码,它能够从豆瓣电影平台获取相关数据并存储到数据库中哦。 结果展示(文末附完整代码): 目…

java: itext8.05 create pdf

只能调用windows 已安装的字体,这样可以在系统中先预装字体,5.0 可以调用自配文件夹的字体文件。CSharp donetItext8.0 可以调用。 /*** encoding: utf-8* 版权所有 2024 ©涂聚文有限公司 言語成了邀功盡責的功臣,還需要行爲每日來值班…

基于Java Springboot公园管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

Java中的File和IO流

File对象 File对象本质是一个文件或文件夹,用于写入和读取文件内容 注意:对于相对路径而言,在单元测试方法中的File是相对于Module,在main中的File是相对于Project 构造器 File(String pathname)File file1 new File("D:…

(Keil)MDK-ARM各种优化选项详细说明、实际应用及拓展内容

参考 MDK-ARM各种优化选项详细说明、实际应用及拓展内容 本文围绕MDK-ARM优化选项,以及相关拓展知识(微库、实际应用、调试)进行讲述,希望对你今后开发项目有所帮助。 1 总述 我们所指的优化,主要两方面: 1.代码大小(Size) 2.代码性能(运行时间) 在MDK-ARM中,优…