当前位置: 首页 > news >正文

Python数据分析:折线图和散点图的绘制

折线图

折线图用于分析自变量和因变量之间的趋势关系,最适合用于显示随着时间而变化的连续数据,同时还可以看出数量的差异,增长情况。

Matplotlib 中绘制散点图的函数为 plot() ,使用语法如下:

matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)

1) 简单的折线图

在matplotlib面向对象的绘图库中,pyplot是一个方便的接口。

plot()函数:支持创建单条折线的折线图,也支持创建包含多条折线的复式折线图----只要在调用plot()时传入多个分别代表X轴和Y轴数据的list列表即可。

 

import matplotlib.pyplot as plt

x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]

plt.plot(x_data,y_data)
plt.show()

2)复式折线图:

 

import matplotlib.pyplot as plt
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
y_data2 = [52000,54200,51500,58300,56800,59500,62700]

plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--')
plt.plot(x_data,y_data2,color='blue',linewidth=3.0,linestyle='-.')
plt.show()

注:

说明:

参数color=’ red ‘,可以换成color=’ #054E9F’,每两个十六进制数分别代表R、G、B分量,除了使用red、blue、green等还可以参照下图

小白

参数linestyle可以选择使用下面的样式:

'-' solid line style 表示实线

'--' dashed line style 表示虚线

'-.' dash-dot line style 表示短线、点相间的虚线

':' dotted line style 表示点线

参数 linewidth 可以指定折线的宽度

参数 marker 是指标记点,有如下的:

3) 管理图例 

对于复式折线图,应该为每条折线添加图例,可以通过legend()函数来实现。

该函数可传入两个list参数,其中第一个list参数(handles参数)用于引用折线图上的每条折线;第二个list参数(labels)代表为每条折线所添加的图例

 

import pandas as pd
import matplotlib.pyplot as plt
 
#读取数据
data = pd.read_excel('matplotlib.xlsx')
 
plt.figure(figsize=(10,5))#设置画布的尺寸
plt.title('Examples of line chart',fontsize=20)#标题,并设定字号大小
plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小
plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小
 
#color:颜色,linewidth:线宽,linestyle:线条类型,label:图例,marker:数据点的类型
in1, = plt.plot(data['时间'],data['收入_Jay'],color="deeppink",linewidth=2,linestyle=':', marker='o')
in2, = plt.plot(data['时间'],data['收入_JJ'],color="darkblue",linewidth=1,linestyle='--', marker='+')
in3, = plt.plot(data['时间'],data['收入_Jolin'],color="goldenrod",linewidth=1.5,linestyle='-', marker='*')
 
plt.legend(handles = [in1,in2,in3],labels=['Jay income','JJ income','Jolon income'],loc=2)#图例展示位置,数字代表第几象限
plt.show()#显示图像

4) 管理多个子图

 

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.gridspec as gridspec
import matplotlib.font_manager as fm  #字体管理器

my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")

plt.figure()

x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)
gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列
ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行
ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0)
ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3)

#绘制正弦曲线
ax1.plot(x_data,np.sin(x_data))
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))
ax1.set_title('正弦曲线',fontproperties=my_font)

#绘制余弦曲线
ax2.plot(x_data,np.cos(x_data))
ax2.spines['right'].set_color('none')
ax2.spines['top'].set_color('none')
ax2.spines['bottom'].set_position(('data',0))
ax2.spines['left'].set_position(('data',0))
ax2.set_title('余弦曲线',fontproperties=my_font)

#绘制正切曲线
ax3.plot(x_data,np.tan(x_data))
ax3.spines['right'].set_color('none')
ax3.spines['top'].set_color('none')
ax3.spines['bottom'].set_position(('data',0))
ax3.spines['left'].set_position(('data',0))
ax3.set_title('正切曲线',fontproperties=my_font)
plt.show()

结果:

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,
关注与私信博主(08)学习更多Python知识与技巧,课件,源码,安装包,还有最新大厂面试资料等等等
咱们下期见。
收藏 等于白嫖,点赞才是真情。

相关文章:

  • 【Vue2基础】Vue项目搭建及组件使用
  • 艾美捷衣霉素Tunicamycin 化学性质及引用文献
  • 【小样本分割】Self-Support Few-Shot Semantic Segmentation
  • ch01变量和数据结构
  • 五分钟学会一门编程语言?
  • 【Python数据分析 - 11】:DataFrame索引操作(pandas篇)
  • [Vue]数据代理
  • VSCODE 系列(二)常用插件
  • 【zabbix】解决zabbix在web页面显示中文乱码问题
  • ESP32/ESP8266自动下载电路波形,ESP32/ESP8266不能UART流控自动下载的解决方法
  • c语言分层理解(枚举和联合体)
  • 网站死链抓取sitemap递交工具
  • 大意了,一次多线程操作不当导致的线上事故...
  • [Spring boot] Spring boot 实现Excel批量导入数据并将文件保存到本地
  • linux下安装javaJDK和hadoop
  • 【技术性】Search知识
  • angular2开源库收集
  • co模块的前端实现
  • exif信息对照
  • fetch 从初识到应用
  • interface和setter,getter
  • log4j2输出到kafka
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • magento 货币换算
  • Promise初体验
  • Redux系列x:源码分析
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • unity如何实现一个固定宽度的orthagraphic相机
  • windows下mongoDB的环境配置
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端_面试
  • 如何用vue打造一个移动端音乐播放器
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 事件委托的小应用
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 再谈express与koa的对比
  • #考研#计算机文化知识1(局域网及网络互联)
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (done) 两个矩阵 “相似” 是什么意思?
  • (二)学习JVM —— 垃圾回收机制
  • (分布式缓存)Redis持久化
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转载)深入super,看Python如何解决钻石继承难题
  • .equals()到底是什么意思?
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET大文件上传知识整理
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • /3GB和/USERVA开关
  • @Autowired和@Resource装配
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [CF226E]Noble Knight's Path
  • [HOW TO]如何在iPhone应用程序中发送邮件