Python数据分析与展示——Matplotlib绘制折线图

1.Matplotlib介绍

Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。

matplotlib.pyplot是绘制各类可视化图形的命令字库,相当于快捷方式。示例:

import matplotlib.pyplot as plt
# 包含五个元素列表的一个图形
#如果输入的参数只是一个一维的列表,那么这个数组会被当成y轴处理,x轴是列表的索引
plt.plot([1,5,8,2,5])
plt.ylabel("grade")  #y轴增加标签
plt.savefig('te01',dpi=600)  #dpi是指每个英寸包含600个像素点(质量挺高的了)
plt.show()

2.图像结构和三层结构

  • 图像结构

 

  • 三层结构

    • 图像层

      • 正式绘图(直方图、折线图、散点图、饼状图)

    • 辅助显示层

      • 用户可以设置添加标题、网格、图例等对图形的描述信息

    • 容器层主要由 Canvas、Figure、Axes 组成。

      • Canvas 是位于最底层的系统层,在绘图的过程中充当画板的角色,即放置画布 (Figure) 的工具。

      • Figure 是 Canvas 上方的第一层,也是需要用户来操作的应用层的第一层,在绘图的过程中充当画布的角色。

      • Axes 是应用层的第二层,在绘图的过程中相当于画布上的绘图区的角色。

      • 特点:

        • 一个figure (画布)可以包含多个 axes (坐标系/绘图区), 但是一个axes 只能属于一个 figure。

        • 一个 axes (坐标系/绘图区)可以包含多个 axis (坐标轴), 包含两个即为2d坐标系,3个即为3d坐标系

    • 容器层

3.折线图

1.折线图的绘制与显示

plot() 用于画图它可以绘制点和线,语法格式如下:

# 画单条线
plot([x], y, [fmt], *, data=None, **kwargs)
# 画多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

参数说明:

  • x:X轴数据,列表或数组,可选(绘制多条曲线时,各条曲线的x不能省略)

  • y:Y轴数据,列表或数组

  • format_string:控制曲线的格式字符串(由颜色字符、风格字符和标记字符组成),可选

    颜色字符
    颜色字符说明颜色字符说明
    'b'蓝色'm'洋红色 magenta
    'g'绿色'y'黄色
    'r'红色'k'黑色
    'c'青绿色 cyan'w'白色
    '#008000'RGB某颜色(十六进制色彩)'0.8'灰度值字符串
    风格字符
    风格字符说明风格字符说明
    '-'实线':'虚线
    '--'破折线'' ' '无线条
    '-.'点划线
    标记字符
    标记字符说明标记字符说明
    '.'点标记's'实心方形标记
    ','像素标记(极小点)'p'实心五角标记
    'o'实心圈标记'*'星形标记
    'v'倒三角标记'h'竖六边形标记
    '^'上三角标记'H'横六边形标记
    '>'右三角标记'+'十字标记
    '<'左三角标记'x'x标记
    '1'下花三角标记'D'菱形标记
    '2'上花三角标记'd'瘦菱形标记
    '3'左花三角标记'|'垂直线标记
    '4'右花三角标记
  • **kwargs:第二组或更多(x, y, format_string)

    • color:控制颜色,color='green'

    • linestyle:线条风格,linestyle='dashed'

    • marker:标记风格,marker='o'

    • markerfacecolor:标记颜色,markerfacecolor='blue'

    • marksize,标记尺寸,markerfacecolor=20

#1.创建画布
plt.figure()
#2.绘制图像
plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13])
#3.显示图像
plt.show()

2.设置画布属性与图片保存

plt.figure(figsize=(),dpi=)

figsize:指定图的长宽

dpi:图像的清晰度

plt.savefig(path)

#1.创建画布
plt.figure(figsize=(20,8),dpi=80)
#2.绘制图像
plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13])
plt.save("test.png")

plt.show()会释放资源,如果在显示图像之后保存图片将只能保存空图片

3.修改x、y轴刻度

  • plt.xticks(x, **kwargs)

    x:要显示的刻度值

  • plt.yticks(y,**kwargs)

    y:要显示的刻度值

#1.准备数据
import random
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
#2.创建画布
plt.figure(figsize=(20,8),dpi=80)
#3.绘制图像
plt.plot(x,y_shanghai)
#修改xy刻度
#准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
#label与x一一对应
plt.xticks(x[::5],x_label[::5])
plt.yticks(range(0,40,5))
#4.显示图像
plt.show()

中文显示问题

原因:字体本身就不支持中文

解决:

4.添加网格显示

  • plt.grid(True,linestyle='--',alpha=0.5)

一般的 ture 显示默认,为是否添加网格,linestyle 为线条风格,显示为虚线。Alpha 为透明度。

5.添加描述信息

添加 x 轴,y 轴描述信息及标题。

  • plt.xlabel("时间")

  • plt.ylabel("温度")

  • plt.title("标题" )

函数说明
plt.xlabel()对X轴增加文本标签
plt.ylabel()对Y轴增加文本标签
plt.title()对图形整体增加文本标签
plt.text()在任意位置增加文本
plt.annotate()在图形中增加带箭头的注解

6.多个折线和显示图例

  • 多个折线

    • import random
      import matplotlib.pyplot as plt
      from matplotlib import font_manager
      my_font = font_manager.FontProperties(fname='msyh.ttc')  # 拷贝过来的字体文件
      x = range(60)
      y_beijing = [random.uniform(15,18) for i in x]
      y_shanghai = [random.uniform(15,18) for i in x]
      #2.创建画布
      plt.figure(figsize=(20,8),dpi=80)
      #3.绘制多个折线
      plt.plot(x,y_shanghai,color='r')
      plt.plot(x,y_beijing,color='b')
      #修改xy刻度
      #准备x的刻度说明
      x_label = ["11点{}分".format(i) for i in x]
      #label与x一一对应
      plt.xticks(x[::5],x_label[::5],fontproperties=my_font)
      plt.yticks(range(0,40,5))
      #4.显示图像
      plt.show()
  • 显示图例

    plt.legend()

    plt. legend(Loc="best")
    #Location String:'best'、'upper right'、'upper left'、'lower left'、'lower right' 等等
    #Location Code:0、1、2、3、4
    #如果想在左下角显示,具体操作如下:
    # 显示图例
    plt.legend(loc=“lower left”)
    #图例出现在左下角。
    #用数字代替也可以。
    # 显示图例
    plt.legend(loc=4)

7.创建多个绘图区

  • plt.subplots(nrows=1, ncols=1, **fig_kw)创建一个带有多个 axes(坐标系/绘图区)的图,返回一个画布figure和绘图区axes。

    figure,axes = plt.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
    #axes[0]为第一个绘图区  以此类推
  • nrows:默认为 1,设置图表的行数。

  • ncols:默认为 1,设置图表的列数。

  • sharex、sharey:设置 x、y 轴是否共享属性,默认为 false,可设置为 'none'、'all'、'row' 或 'col'。 False 或 none 每个子图的 x 轴或 y 轴都是独立的,True 或 'all':所有子图共享 x 轴或 y 轴,'row' 设置每个子图行共享一个 x 轴或 y 轴,'col':设置每个子图列共享一个 x 轴或 y 轴。

  • squeeze:布尔值,默认为 True,表示额外的维度从返回的 Axes(轴)对象中挤出,对于 N1 或 1N 个子图,返回一个 1 维数组,对于 N*M,N>1 和 M>1 返回一个 2 维数组。如果设置为 False,则不进行挤压操作,返回一个元素为 Axes 实例的2维数组,即使它最终是1x1。

  • subplot_kw:可选,字典类型。把字典的关键字传递给 add_subplot() 来创建每个子图。

  • gridspec_kw:可选,字典类型。把字典的关键字传递给 GridSpec 构造函数创建子图放在网格里(grid)。

  • **fig_kw:把详细的关键字参数传给 figure() 函数。

​​​​​

面向对象的方法:axes.set_方法名()

  • eg:

    • set_ xticks

    • set_ yticks

    • set_ xlabel

    • set_ ylabel

  • import random
    import matplotlib.pyplot as plt
    from matplotlib import font_manager
    my_font = font_manager.FontProperties(fname='msyh.ttc')  # 拷贝过来的字体文件
    x = range(60)
    y_beijing = [random.uniform(15,18) for i in x]
    y_shanghai = [random.uniform(15,18) for i in x]
    #2.创建画布
    # plt.figure(figsize=(20,8),dpi=80)
    #创建多个子图
    figure,axes = plt.subplots(nrows=1, ncols=2,figsize=(20,8),dpi=80)
    #3.绘制图像
    axes[0].plot(x,y_shanghai)
    axes[1].plot(x,y_beijing)
    ​
    #修改xy刻度
    #准备x的刻度说明
    x_label = ["11点{}分".format(i) for i in x]
    #label与x一一对应
    axes[0].set_xticks(x[::5])
    axes[0].set_xticklabels(x_label[::5],fontproperties=my_font)
    axes[0].set_yticks(range(0,40,5))
    axes[1].set_xticks(x[::5])
    axes[1].set_xticklabels(x_label[::5],fontproperties=my_font)
    axes[1].set_yticks(range(0,40,5))
    #4.显示图像
    plt.show()

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用PythonMatplotlib绘制折线图,你可以按照以下步骤进行操作: 1. 首先,导入Matplotlib库。你可以使用以下代码导入Matplotlib的pyplot模块: ```python import matplotlib.pyplot as plt ``` 2. 然后,准备要绘制的数据。你需要提供x轴和y轴的数据。例如,你可以使用以下代码定义x轴和y轴的数据: ```python x = \[1, 2, 3, 4, 5\] # x轴数据 y = \[10, 15, 7, 12, 9\] # y轴数据 ``` 3. 接下来,使用plot函数绘制折线图。你可以使用以下代码绘制折线图: ```python plt.plot(x, y) ``` 4. 最后,使用show函数显示绘制折线图。你可以使用以下代码显示折线图: ```python plt.show() ``` 综上所述,你可以使用Matplotlib库的pyplot模块来绘制折线图。首先导入Matplotlib库,然后准备要绘制的数据,使用plot函数绘制折线图,最后使用show函数显示折线图。希望这个步骤对你有帮助! #### 引用[.reference_title] - *1* *2* [【PythonMatplotlib绘制折线图](https://blog.csdn.net/qq_53893431/article/details/124906064)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python:如何使用matplotlib绘制折线图](https://blog.csdn.net/qq_58754996/article/details/121169861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值