Python数据可视化的例子 您所在的位置:网站首页 origin函数折线图的节点怎么设置 Python数据可视化的例子

Python数据可视化的例子

2023-08-18 15:37| 来源: 网络整理| 查看: 265

对于时间序列数据而言,一般都会使用折线图反映数据背后的趋势。通常折线图的横坐标指代日期数据,纵坐标代表某个数值型变量,当然还可以使用第三个离散变量对折线图进行分组处理。接下来仅使用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_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


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有