Python数据可视化的例子——折线图(line)

article/2025/11/6 21:28:45

对于时间序列数据而言,一般都会使用折线图反映数据背后的趋势。通常折线图的横坐标指代日期数据,纵坐标代表某个数值型变量,当然还可以使用第三个离散变量对折线图进行分组处理。接下来仅使用Python中的matplotlib模块和pandas模块实现折线图的绘制。尽管seaborn模块中的tsplot函数也可以绘制时间序列的折线图,但是该函数非常不合理,故不进行介绍。

1.matplotlib模块

折线图的绘制可以使用matplotlib模块中的plot函数实现。关于该函数的语法和参数含义如下:

plt.plot(x, y, linestyle, linewidth, color, marker,markersize, markeredgecolor, markerfactcolor,markeredgewidth, label, alpha)
  • x:指定折线图的x轴数据。
  • y:指定折线图的y轴数据。
  • linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认为实线。
  • linewidth:指定折线的宽度。
  • marker:可以为折线图添加点,该参数是设置点的形状。
  • markersize:设置点的大小。
  • markeredgecolor:设置点的边框色。
  • markerfactcolor:设置点的填充色。
  • markeredgewidth:设置点的边框宽度。
  • label:为折线图添加标签,类似于图例的作用。
    为了进一步理解plot函数中的参数含义,这里以某微信公众号的阅读人数和阅读人次为例(数据包含日期、人数和人次三个字段):
    在这里插入图片描述
    绘制2017年第四季度微信文章阅读人数的折线图,代码如下:
import pandas as pd
import matplotlib.pyplot as plt#设置绘图风格
plt.style.use('ggplot')
#处理中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
#坐标轴负号的处理
plt.rcParams['axes.unicode_minus']=False
# 读取数据
wechat = pd.read_excel(r'wechat.xlsx')
# 绘制单条折线图
plt.plot(wechat.Date, # x轴数据wechat.Counts, # y轴数据linestyle = '-', # 折线类型linewidth = 2, # 折线宽度color = 'steelblue', # 折线颜色marker = 'o', # 折线图中添加圆点markersize = 6, # 点的大小markeredgecolor='black', # 点的边框色markerfacecolor='brown', # 点的填充色)
#对于X轴,只显示x中各个数对应的刻度值
plt.xticks(fontsize=8, )  #改变x轴文字值的文字大小
# 添加y轴标签
plt.ylabel('人数')
# 添加图形标题
plt.title('每天微信文章阅读人数趋势')
# 显示图形
plt.show()

在这里插入图片描述
如上图所示,在绘制折线图的同时,也添加了每个数据对应的圆点。读者可能会注意到,代码中折线类型和点类型分别用一个减号-(代表实线)和字母o(代表空心圆点)表示。是否还有其他的表示方法?这里将常用的线型和点型汇总到下表中。
在这里插入图片描述
虽然上面的图形可以反映有关微信文章阅读人数的波动趋势,但是为了进一步改进这个折线图,还需要解决两个问题:

  • 如何将微信文章的阅读人数和阅读人次同时呈现在图中。
  • 对于x轴的刻度标签,是否可以只保留月份和日期,并且以7天作为间隔。
import pandas as pd
import matplotlib.pyplot as plt#设置绘图风格
plt.style.use('ggplot')
#处理中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
#坐标轴负号的处理
plt.rcParams['axes.unicode_minus']=False
# 读取数据
wechat = pd.read_excel(r'wechat.xlsx')
# 绘制两条折线图
# 导入模块,用于日期刻度的修改
import matplotlib as mpl
# 绘制阅读人数折线图
plt.plot(wechat.Date, # x轴数据wechat.Counts, # y轴数据linestyle = '-', # 折线类型,实心线color = 'steelblue', # 折线颜色label = '阅读人数')
# 绘制阅读人次折线图
plt.plot(wechat.Date, # x轴数据wechat.Times, # y轴数据linestyle = '--', # 折线类型,虚线color = 'indianred', # 折线颜色label = '阅读人次')# 获取图的坐标信息
ax = plt.gca()
# 设置日期的显示格式
date_format = mpl.dates.DateFormatter("%m-%d")
ax.xaxis.set_major_formatter(date_format)# 设置x轴显示多少个日期刻度
# xlocator = mpl.ticker.LinearLocator(10)  #注释掉电脑将显示默认刻度数
# 设置x轴每个刻度的间隔天数
xlocator = mpl.ticker.MultipleLocator(7)
ax.xaxis.set_major_locator(xlocator)# 为了避免x轴刻度标签的紧凑,将刻度标签旋转45度
plt.xticks(rotation=45)# 添加y轴标签
plt.ylabel('人数')
# 添加图形标题
plt.title('每天微信文章阅读人数与人次趋势')
# 添加图例
plt.legend()
#设置横纵坐标的刻度范围
# plt.xlim((0, 10200))   #x轴的刻度范围被设为a到b
plt.ylim((0, 4000))    #y轴的刻度范围被设为a'到b'
# 显示图形
plt.show()

结果:
在这里插入图片描述
上图所示,恰到好处地解决了之前提出的两个问题。上面的绘图代码可以分解为两个核心部分:

  • 运用两次plot函数分别绘制阅读人数和阅读人次的折线图,最终通过plt.show()将两条折线呈现在一张图中。
  • 日期型轴刻度的设置,ax变量用来获取原始状态的轴属性,然后基于ax对象修改刻度的显示方式,一个是仅包含月日的格式,另一个是每7天作为一个间隔。

2.pandas模块

如果使用pandas模块绘制折线图,调用的仍然是plot方法,接下来以2015—2017年上海每天的最高气温数据为例,绘制每月平均最高气温的三条折线图:
在这里插入图片描述
具体代码如下:

import pandas as pd
import matplotlib.pyplot as plt#设置绘图风格
plt.style.use('ggplot')
#处理中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
#坐标轴负号的处理
plt.rcParams['axes.unicode_minus']=False# 读取天气数据
weather = pd.read_excel(r'weather.xlsx')
# 统计每月的平均最高气温
data = weather.pivot_table(index = 'month', columns='year', values='high')
# 绘制折线图
data.plot(kind = 'line',style = ['-','--',':'] # 设置折线图的线条类型)
# 修改x轴和y轴标签
plt.xlabel('月份')
plt.ylabel('气温')
# 添加图形标题
plt.title('每月平均最高气温波动趋势')
# 显示图形
plt.show()

在这里插入图片描述
如上图所示,图中表示的是各年份中每月平均最高气温的走势,虽然绘图的核心部分(plot过程)很简单,但是前提需要将原始数据集转换成可以绘制多条折线图的格式,即构成三条折线图的数据分别为数据框的三个字段。为了构造特定需求的数据集,使用了数据框的pivot_table方法,形成一张满足条件的透视表。下图所示就是数据集转换的前后对比。
在这里插入图片描述
作图参考链接:
Python数据可视化——matplotlib.pyplot中plt的参数详解
Python用插值法绘制平滑曲线
python的折线图以及折线图转折点 marker 样式的设置
折线图转折点 marker 样式的设置

marker表示的意思是对标记设置关键字参数的样式
markeredgecolor 或 mec 标记边缘颜色
markeredgewidth 或 mew 标记边缘宽度
markerfacecolor 或 mfc 标记面颜色
markerfacecoloralt 或 mfcalt
markersize 或 ms 标记大小
其中marker可取值为:
'.': point marker
',': pixel marker
'o': circle marker
'v': triangle_down marker
'^': triangle_up marker
'<': triangle_left marker
'>': triangle_right marker
'1': tri_down marker
'2': tri_up marker
'3': tri_left marker
'4': tri_right marker
's': square marker
'p': pentagon marker
'*': star marker
'h': hexagon1 marker
'H': hexagon2 marker
'+': plus marker
'x': x marker
'D': diamond marker
'd': thin_diamond marker
'|': vline marker
'_': hline marker

http://chatgpt.dhexx.cn/article/PtJVR6nD.shtml

相关文章

使用python绘制简单折线图

首先&#xff0c;打开电脑命令行输入&#xff1a; pip install matplotlib 对python中matplotlib进行下载。 构建python文件&#xff0c;使用import函数引入两个类&#xff0c;使我们可以绘制图像并对图像样式进行改变使其更加明显美观。 值得一提的是&#xff0c;matplotl…

Python Matplotlib 折线图 线条颜色和样式

Python Matplotlib 折线图 线条颜色和样式 折线颜色折线形状数据点&#xff08;节点&#xff09;形状坐标示例 折线颜色 折线形状 ‘-’ &#xff1a;实线 ‘-.’ &#xff1a;实虚线 ‘–’&#xff1a;虚线 ‘:’ &#xff1a;点虚线 数据点&#xff08;节点&#xff09;形…

【Python】matplotlib之折线图的各种样式和画法

上述图的完整代码如下&#xff1a; from numpy import * import numpy as np import pandas as pd import matplotlib.pyplot as plt import pylab as pl from mpl_toolkits.axes_grid1.inset_locator import inset_axesy1 [0.92787363, 0.92436059, 0.92380563, 0.92169979,…

Python:如何使用matplotlib绘制折线图

前言&#xff1a; 我的python学习也告一段落了。不过有些&#xff0c;方法还是打算总结一下和大家分享。我整理了使用matplotlib绘制折线图的一般步骤&#xff0c;按照这个步骤走绘制折线图一般都没啥问题。其实用matplotlib库绘制折线图的过程&#xff0c;其实就是类似于数学上…

python画多条折线图(简介)

目录 一、打开python 二、代码 三、运行结果 一、打开python 新建一个pathon项目。 二、代码 # -*- coding: utf-8 -*- import matplotlib.pyplot as pltnames [1, 2, 3, 4, 5, 6] x range(len(names)) plt.rcParams[font.sans-serif] [SimHei] # 显示汉字y_1 [2, 3…

Python可视化——绘制折线图

绘制折线图 plot() &#xff08;1&#xff09;准备工作 绘制可视化图形&#xff0c;将会使用到Matplotlib库中的pyplot包。 Matplotlib是Python的绘图库&#xff0c;其中的pyplot包封装了很多画图的函数。 Matplotlib.pyplot 包含一系列类似 MATLAB 中绘图函数的相关函数。 因…

【Python】Matplotlib绘制折线图

文章目录 1.Matplotlib画图简单实现2.折线图2.1绘制折线图2.2设置线的格式2.3设置折点2.4.图片的保存和导出2.5设置刻度2.6显示中文2.7实例&#xff1a;每分钟心脏跳动图 3.拓展3..1一图多线3.2一图多个坐标子图3.3坐标轴设置 1.Matplotlib画图简单实现 Matplotlib在一个绘制2D…

【python】画折线图

文章目录 一个简单的折线图同一张图上显示多条数据给这个折线图中的点加数据标签 一个简单的折线图 画折线图至少需要2个列表&#xff1a;横坐标列表和纵坐标列表&#xff0c;两个坐标的位置一一对应。 from pylab import * mpl.rcParams[font.sans-serif] [SimHei] # 添加…

Python绘制折线图

一、安装matplotlib pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple二、matplotlib图像简介 matplotlib的图像分为三层&#xff0c;容器层、辅助显示层和图像层。 容器层主要由Canvas、Figure、Axes组成。 Canvas位于图像的最底层&#xff0c;充当画…

使用python代码画折线图【matplotlib】

1、画折线图【一条示例】 import matplotlib.pyplot as plt import numpy as npx_axis_data [1,2,3,4,5,6,7] #x y_axis_data [68,69,79,71,80,70,66] #yplt.plot(x_axis_data, y_axis_data, b*--, alpha0.5, linewidth1, labelacc)#bo-表示蓝色实线&#xff0c;数据点实心原…

使用python绘制折线图

前言 最近在完成一篇气象预报的论文&#xff0c;涉及到深度学习与气象绘图。我觉得还是有必要写一下我在这个过程中的一些经验总结&#xff0c;借此机会与各位同道交流。 一、基础命令 在我们使用深度学习时&#xff0c;肯定会用到绘图命令&#xff0c;绘制loss与val_loss等…

Python数据分析--Matplotlib绘图--折线图

Matplotlib中的折线图 折线图简介 折线图,是一种将点按照顺序连接起来的图形,可以看做是将散点图,按照x轴坐标顺序连接起来的图像. 折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间而变化的连续数据. 可以看出数量的差异,增长趋势的变化.折线图的代…

Python matplotlib绘制折线图

Python matplotlib绘制折线图 matplotlib是Python中的一个第三方库。主要用于开发2D图表&#xff0c;以渐进式、交互式的方式实现数据可视化&#xff0c;可以更直观的呈现数据&#xff0c;使数据更具说服力。 一、安装matplotlib pip install matplotlib -i https://pypi.tu…

用python画折线图

import matplotlib.pyplot as plt #设置默认字体&#xff0c;选择支持中文的字体以避免出现中文乱码情况 plt.rcParams[font.sans-serif] [Arial Unicode MS] from matplotlib.ticker import MultipleLocator, FormatStrFormatter lst_temp3[10, 16, 17, 14, 12, 10, 12, 6, 6…

一文看懂用python绘制折线图(吐血整理版)极详细!

折线图的绘制主要分为四步&#xff1a; 1&#xff09;导入相关的库 2&#xff09;做图片输出的通用设置 3&#xff09;设置数据及折现的属性 4&#xff09;设置图的标题 案例&#xff1a; import matplotlib import numpy as np from matplotlib import pyplot as plt %…

代码解读——Retinex低光照图像增强(Deep Retinex Decomposition for Low-Light Enhancement)

今天带来一篇代码解读的文章&#xff0c;是2018年BMVC上的一篇暗光增强文章。个人觉得网络比较轻量并且能够取得还不错的效果。废话不多说&#xff0c;直接贴传送门&#xff1a; 文章地址&#xff1a;http://arxiv.org/abs/1808.04560 源码地址&#xff1a;https://github.co…

Retinex低光照图像增强

Retinex低光照图像增强 常见的图像增强算法基于直方图的增强算法基于Retinex理论的图像增强算法基于同态滤波的图像增强算法基于双边滤波改进的Retinex算法分析 常见的图像增强算法 在夜间等弱光环境下拍摄的图像&#xff0c;由于其亮度、对比度较低且含有噪声、色彩不饱和、细…

对Retinex算法的一些理解

最近在跟老师做视网膜病灶检测的一个项目,其中一个环节是将两张不同时刻的视网膜图像(灰度图像)亮度对齐以方便后续的处理,即保持相同的组织变化后的灰度值基本相同而病变区域仍有较大的差异。在这个对齐图像亮度的环节中我主要应用了Retinex算法,也测试了一些图像,现在把…

OpenCV—Python Retinex图像增强算法

Retinex图像增强算法 一、单尺度SSR(Single Scale Retinex)理论二、Retinex理论的理解三、多尺度MSR(Multi-Scale Retinex)四、MSRCR & MSRCPMSRCR 算法步骤MSRCR其他实现方法MSRCP算法实现&#xff1a;&#xff08;代码有问题&#xff0c;改进待续&#xff09; 一、单尺度…

Retinex算法在暗光增强应用以及Python实现

图像暗光增强&#xff08;一&#xff09; Retinex简介Single Scale Retinex&#xff08;SSR&#xff09;多尺度MSR Multi-Scale Retinex带色彩恢复的多尺度MSR&#xff0c;即MSRCR(Multi-Scale Retinex with Color Restoration)MSRCP Retinex简介 Retinex由两个单词合成的一个…