Python可视化 --折线图

本文详细介绍了如何使用Python中的matplotlib和pandas模块创建折线图,包括基本的plot函数用法,以及如何处理时间序列数据和添加图例。同时提到了seaborn的tsplot函数的不足。通过实例展示了从简单的数据到复杂的数据分析过程。
摘要由CSDN通过智能技术生成

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

例题一

import numpy as np # 大数据三剑客:numpy  pandas  matplotlab
import matplotlib.pyplot as plt ## 本次课程,最核心的库,之前的图都在这里

data = np.array([2,4,1,5,6,2]) #定义一个numpy格式的数据,也是pandas库中Serise格式
    #画图的一维数据 用列表,元组也是可以的
fig = plt.figure(figsize=(10,4)) #定义一个画框
ax = fig.add_subplot(121)   #在画框上定义画轴  一行二列的画,位置是1
ax.plot(data)
bx = fig.add_subplot(122)   #在画框上定义画轴  一行二列的画,位置是2
bx.plot(data)
plt.show()

例题二

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']  #为系统定义中文字体
x = ['9时','10时','11时','12时','13时','14时','15时','16时','17时','18时','19时','20时']
y=[5,6,7,8,8,8,8,7,7,6,5,4]
plt.plot(x,y)
plt.show()

例题三

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']  #为系统定义中文字体
x = ['9时','10时','11时','12时','13时','14时','15时','16时','17时','18时','19时','20时']
y=[5,6,7,8,8,8,8,7,7,6,5,4]
x2 =['a','b','c']
y2=[12,15,13]
plt.plot(x,y,x2,y2)
plt.show()

例题四

import numpy as np 
import matplotlib.pyplot as plt
plt.plot([[1,2,1],[3,2,3],[5,4,6]])
plt.show()

例题五

import numpy as np 
import matplotlib.pyplot as plt
x = ['3月1','3月2','3月3','3月4','3月5','3月6','3月7','3月8']
ly=[1,-1,0,9,7,3,3,5]
hy=[8,13,16,18,15,11,16,15]
plt.plot(x,ly,linestyle='--',marker="*")  # P81是颜色   P85是线形  P87是标记点
plt.plot(x,hy,color='r',linestyle=':',marker="X")
plt.show()

例题六

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(4, 19)
y_max = np.array([32, 33, 34, 34, 33, 31, 30, 29, 30, 29, 26, 23, 21, 25, 31])
y_min = np.array([19, 19, 20, 22, 22, 21, 22, 16, 18, 18, 17, 14, 15, 16, 16])

plt.plot(x, y_max, label='Max Temperature')
plt.plot(x, y_min, label='Min Temperature')

# 填充最高温度和最低温度之间的颜色范围
plt.fill_between(x, y_max, y_min, color='skyblue', alpha=0.5)

plt.xlabel('Day')
plt.ylabel('Temperature (°C)')
plt.title('Daily Temperature Variation')
plt.legend()
plt.show()

例题七

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rcParams['font.sans-serif'] = ['SimHei']  # 为系统定义中文字体
wentu = pd.read_excel(r'D:\新建文件夹\2-1.xls')

# 将日期数据转换为字符串格式
wentu['日期'] = wentu['日期'].apply(lambda x: x.strftime('%m-%d'))

# 定义 x 轴的取值范围
x = np.arange(len(wentu))

plt.plot(wentu.日期, wentu.最高气温, label='Max Temperature')
plt.plot(wentu.日期, wentu.最低气温, label='Min Temperature')

# 填充最高温度和最低温度之间的颜色范围
plt.fill_between(x, wentu.最高气温, wentu.最低气温, color='skyblue', alpha=0.5)

plt.xlabel('Day')
plt.ylabel('Temperature (°C)')
plt.title('Daily Temperature Variation')
plt.xticks(rotation=45)  # 旋转 x 轴刻度标签
plt.legend()
plt.show()

例题八

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,2*np.pi, 1000)
y2 = np.cos(x)
plt.plot(x, y2, label='$cos(x)$', color='red')
plt.xlim(0, 7)
plt.legend()
plt.show()

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值