matplotlib——折线图(python)

前言

在学习数据分析前,一定要有python基础,不一定要非常熟练的掌握这门语言,但一定要对python有个大概的了解(就像我一样,大一学过python,但是现在忘的差不多了,但是没关系,有个大致了解即可,遇到不会的再去Google就行😂)。

什么是matplotlib

matplotlib是最流行的python底层绘图库,主要做数据可视化图表,名字取自matlab,模仿matlib构建

我们为什么要学matplotlib

  1. 能将数据进行可视化,更直观的呈现。
  2. 使数据更加客观,更具说服力

正文

第一版

代码
from matplotlib import pyplot as plt

x=range(2,26,2)
y=[15,16,18,19,21,21,24,27,25,23,22,18]

plt.plot(x,y)
plt.show()
效果

在这里插入图片描述

这是最简略的版本,我们只是简单的把折线图画出来了,但是先不说别人能不能看明白,我们自己就看不明白。所以我们要改进。
要改进的问题:

  1. 设置图片大小
  2. 保存到本地
  3. 描述信息,比如x轴,y轴表示什么,这个图表示什么
  4. 调整x轴,y轴刻度的间距
  5. 线条的样式(比如颜色,透明度)
  6. 给图片加水印(防止图片被盗用)

第二版

代码
# 导入库
from matplotlib import pyplot as plt

# 解决中文乱码
import matplotlib
matplotlib.rc("font",family='FangSong')

# 初始化数据
# 数据在x轴的位置,是一个可迭代的对象,在y轴也是如此
# x轴和y轴的数据一起组成了所有要绘制出的坐标,分别是(2,15),(4,16).....(24.18)
x=range(2,26,2)		
y=[15,16,18,19,21,21,24,27,25,23,22,18]


# 设置图片大小属性
# figsize设置画布的大小,第一个元素是长,第二个元素是宽
# dpi表示清晰度(我也不是很清楚,大概这么理解),越大图片越清晰
fig=plt.figure(figsize=(20,8),dpi=160)

# 添加描述信息,x/y轴表示什么,这个图形表示什么
# xlabel和ylabel都是设置横纵坐标的信息
# title是设置整张图片的信息,表示这张图片表示什么
plt.xlabel("时间")
plt.ylabel("温度(摄氏度)")
plt.title("一天中气温随时间变化曲线")

# 调整x/y轴的刻度间距
# 先准备一个列表,这个列表中的数据是x轴的刻度,然后将x轴刻度设置成列表中的数据。y轴也是如此。
x_ticks=range(2,25)
y_ticks=range(min(y),max(y)+1)
plt.xticks(x_ticks)
plt.yticks(y_ticks)

# 添加水印
plt.text(x=1,               # 水印开头左下角对应的X点
            y=35,               # 水印开头左下角对应的Y点
            s="Matplotlib",    # 水印文本
            fontsize=30,       # 水印大小
            color="gray",      # 水印颜色
            alpha=0.5)         # 水印是通过透明度控制的

# 绘制图形
plt.plot(x,y)

# 保存到本地
plt.savefig("./image/pic1.svg")

# 展示图形
plt.show()
效果

在这里插入图片描述

进阶练习

需求:我们绘制一个折线图,表示我和同桌随年龄增长交往的朋友的数量,注意这里是要一个图里画两条线。

代码
# 一个小demo演示

from matplotlib import pyplot as plt

# 解决中文乱码
import matplotlib
matplotlib.rc("font",family='FangSong')

y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
x = range(11,31)

fig=plt.figure(figsize=(20,8),dpi=160)

plt.xlabel("年龄")
plt.ylabel("交往的朋友数量(个)")
plt.title("随年龄增长交往的朋友数量")

x_ticks=["{}岁".format(i) for i in x]
plt.xticks(x,x_ticks)
plt.yticks(range(min(y),max(y)+3))

# 加上网格
plt.grid(alpha=.4,linestyle="-.")

# 设置线条样式
plt.plot(x,y_1,label="自己",color="r",linestyle=":")
plt.plot(x,y_2,label="同桌",color="b",linestyle="--")

plt.legend()
plt.show()

# plt.savefig("./image/pic2.svg")
注意

● 这里设置的x轴刻度带有中文,一般按照上面的格式来设置(应该还有其他方法,但是我才学疏浅,还没有掌握)。x_ticks是中文和数字组合的刻度的列表,最后用plt.plot()设置时要传两个参数,第一个参数是纯数字(一定要和x_ticks中的填充的数字一样),第二个参数就是x_ticks。
● 设置线条样式

颜色字符风格字符
r红色-实线
g绿色--虚线
b蓝色-.点划线
w白色:点虚线
c青色' '留空或空格,无线条
m洋红
y黄色
k黑色
#00ff0016进制,自定义颜色
效果

在这里插入图片描述

代码
# 第二个小demo,演示十点到十二点的的气温变化

from matplotlib import pyplot as plt

# 解决中文乱码
import matplotlib
matplotlib.rc("font",family='FangSong')

x=range(0,120)
y=[random.randint(20,35) for i in range(120)]

fig=plt.figure(figsize=(20,8),dpi=200)

plt.xlabel("time")
plt.ylabel("气温")

x_ticks=["10点{}分".format(i) for i in range(60)]
x_ticks+=["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45)
plt.yticks(range(20,36))
           
plt.grid(alpha=.4)

plt.text(x=1,               # 水印开头左下角对应的X点
            y=35,               # 水印开头左下角对应的Y点
            s="Matplotlib",    # 水印文本
            fontsize=30,       # 水印大小
            color="gray",      # 水印颜色
            alpha=0.5)         # 水印是通过透明度控制的


plt.plot(x,y)
plt.show()

# plt.savefig("./image/pic3.svg")
效果

在这里插入图片描述

说明

在设置x轴刻度时,我们会遇到两个问题。
● 如果太密集的话,我们进行切片操作。
● 如果太密集的话,我们对刻度进行旋转,rotation就是设置旋转的参数,传的参数就是旋转的度数(0度是横着,即与x轴平行)

总结

  1. 绘制折线图(plt.plot)
  2. 设置图片的大小和分辨率(plt.figure)
  3. 实现图片的保存(plt.savefig)
  4. 设置x/y轴上的刻度和字符串(plt.xticks和plt.yticks)
  5. 解决刻度稀疏和密集的问题(切片和旋转)
  6. 设置标题,xy轴的label(plt.titleplt.xlabelplt.ylabel)。特别的,如果有多条线的话,要在绘制时(plt.plot)设置每条线的标签,并且最后还要plt.legend。
  7. 设置字体,解决中文乱码的问题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL 解释器小记

解释器的结果通常通过上述表格展示: 1. select_type 表示查询的类型 simple: 表示简单的选择查询,没有子查询或连接操作 primary:表示主查询,通常是最外层的查询 subquery :表示子查询,在主查询中嵌套的查询 derived: 表示派…

vue2 开发记录

el-select 如何修改选择项的样式/el-select-dropdown__item 文字上下显示 测试代码 <div stylemargin-left: 100px><!-- 测试代码--><el-select filterablesizemini><div classxxx-el-select><el-optionv-foritem in [{key:1,des:2,…

构建产业图谱,实现产业链精准招商!

​产业链招商是一种以产业链为基础的招商引资方式&#xff0c;它不仅仅关注单个企业的引入&#xff0c;而是侧重于整个产业链的布局和发展&#xff0c;通过吸引产业链上下游相关企业共同入驻&#xff0c;形成产业集群&#xff0c;从而提升地区或园区的产业竞争力和经济效益&…

数据之光:探索数据库技术的演进之路

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

Linux - 基本指令

1、ls 指令 语法&#xff1a;ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; -a 列出目录下的所有文件&#xff0c;包括以 . 开头的隐含文件-l …

重塑计算:ICP 打造无限智能合约云解决方案

作者&#xff1a;Lynn Cadet 编译&#xff1a;TinTinLand 原文&#xff1a;https://www.hostingadvice.com/blog/internet-computer-offers-a-limitless-smart-contract-cloud-solution/ 摘要&#xff1a;与其前身互联网一样&#xff0c;区块链行业寻求引领一个新时代及其经济…

力扣-跳跃游戏

问题 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 解答 class Solu…

linux系统Jenkins工具添加自由项目和maven项目

Jenkins添加自由项目 添加自由项目操作流程代码远程代码邮件标题邮件正文 添加maven项目准备环境操作流程 添加自由项目 gitlab配置基本代码页面等&#xff0c;拉取代码&#xff0c;打包&#xff0c;发布操作流程 代码 远程代码 echo ssh root192.168.188.177 "tar cz…

C++的常用排序(未完待续)

注&#xff1a;本文以升序为例 一、冒泡排序 1.1 操作方法 步骤1比较相邻元素&#xff0c;如果前者比后者大&#xff0c;则交换它们。步骤2对头到尾&#xff0c;对所有元素按序执行一轮这样的操作(这样可以找到第一最大值)步骤3再从第一个元素开始&#xff0c;重复上述比较操…

数据可视化基础与应用-02-基于powerbi实现连锁糕点店数据集的仪表盘制作

总结 本系列是数据可视化基础与应用的第02篇&#xff0c;主要介绍基于powerbi实现一个连锁糕点店数据集的仪表盘制作。 数据集描述 有一个数据集&#xff0c;包含四张工作簿&#xff0c;每个工作簿是一张表&#xff0c;其中可以销售表可以划分为事实表&#xff0c;产品表&am…

Python 在Word中查找并高亮指定文本

当你需要在长文档或报告中快速找到特定的关键词或短语&#xff0c;Word中提供的查找并高亮这一功能可以帮助你迅速定位这些内容。本文将介绍如何使用Python在Word中查找并突出显示指定的文本。 所需工具&#xff1a;第三方库 Spire.Doc for Python。该库支持创建、编辑、转换Wo…

笔记72:关于IMU(惯性测量单元)传感器的作用【不涉及公式推导】

一、IMU传感器是什么&#xff1a; 惯性测量单元IMU&#xff08;Inertial Measurement Unit&#xff09;是一种使用【加速度计】和【陀螺仪】来测量【物体三轴姿态角&#xff08;空间姿态&#xff09;】的装置&#xff1b;IMU在坐标系的每个坐标轴上&#xff0c;均安装有1个陀螺…

Zabbix“专家坐诊”第231期问答

问题一 Q&#xff1a;用docker-compose部署zabbix&#xff0c;部署完后如果要修改zabbix的配置应该要改docker-compose文件里的环境变量吧&#xff1f;改了环境变量之后只能重建容器才能生效吗&#xff1f;能不能在不影响已经配好的那些监控项的情况下让新的环境变量生效&#…

Vue+SpringBoot打造天然气工程运维系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程 12.2.2 流程 22.3 各角色功能2.3.1 系统管理员功能2.3.2 用户服务部功能2.3.3 分公司&#xff08;施工单位&#xff09;功能2.3.3.1 技术员角色功能2.3.3.2 材料员角色功能 2.3.4 安…

谷歌seo推广秒收录怎么做?

谷歌SEO推广秒收录想要做到&#xff0c;可以利用我们光算科技独家技术&#xff0c;GSI快速收录&#xff0c;通过技术手段和操作&#xff0c;帮你的网站快速被谷歌发现和记录 这项技术具体核心就是GPC爬虫池系统&#xff0c;这个系统是专门研究谷歌搜索引擎优化的规律和算法创造…

Makefile从入门到项目编译实战(学习笔记)

1.make和makefile介绍 1. make make 是一个应用程序&#xff0c;位于 /usr/bin/make 目录下&#xff0c;make 有如下的功能&#xff1a; &#xff08;1&#xff09;解析源程序之间的依赖关系 &#xff08;2&#xff09;根据依赖关系自动维护编译工作 &#xff08;3&#xff09…

「MySQL」增删查改

在操作数据库中的表时&#xff0c;需要先使用该数据库&#xff1a; use database;新增 创建表 先用 use 指定一个数据库,然后使用 create 新增一个表 比如建立一个学生表 mysql> use goods; mysql> create table student(-> name varchar(4),-> age int,-> …

React富文本编辑器开发(三)

现在我们的编辑器显示的内容很单一&#xff0c;这自然不是我们的目标&#xff0c;让呈现的内容多元化是我们的追求。这就需要让编辑器能够接收多元素的定义。从初始数据的定义我们可以推断数据的格式远不止一种&#xff0c;那么其它类型的数据如何定义及呈现的呢&#xff0c;我…

装修效果图云渲染服务的时间效率分析

高质量的室内设计效果图对于展示设计方案和吸引客户至关重要&#xff0c;但其渲染过程往往耗时且可能导致项目进度延误。对设计师而言&#xff0c;提升渲染速度是至关重要的&#xff0c;因为这直接关系到他们的工作效率以及客户满意度。室内效果图的渲染时间通常受到图像复杂度…

Nginx 常用的基础配置(前端相关方面)

Nginx是一款高性能的Web服务器和反向代理服务器&#xff0c;广泛应用于互联网领域。作为一名前端同学&#xff0c;了解并掌握Nginx的配置是非常有必要的。 安装Nginx sudo apt-get update sudo apt-get install nginx查看Nginx版本 nginx -v启动、停止、重启Nginx服务 sudo …