matplotlib画折线图

matplotlib画折线图

  • 假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15]

    代码如下:

    # 导入pyplot
    from matplotlib import pyplot as plt 
    
    # 数据在X轴的位置,是一个可迭代的对象
    x = range(2, 26, 2)
    # 数据在Y轴的位置,是一个可迭代的对象
    # X轴与Y轴的数据个数必须一样,否则会报错
    # X轴和Y轴的数据一起组成了所有要绘制出的坐标
    # 分别是(2,15),(4,13)...
    y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
    # 传入x,y,通过pyplot绘制出折线图
    plt.plot(x, y)
    # 展示图形
    plt.show()
    

结果如下图所示:
image.png
  • 从图中可以看出,还存在一下几个问题:
    1. 设置图片大小(想要一个高清大图)

      • 使用figure中的参数figsize调整大小
      from matplotlib import pyplot as plt
      
      # figure图形图标的意思,在这里就是指我们画的图
      # 通过实例化一个figure并且传递参数
      # 在图像模糊的时候可以传入dpi参数,让图片更加清晰
      fig = plt.figure(figsize=(20, 8), dpi=80)
      
      x = range(2, 26, 2)
      y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
      plt.plot(x, y)
      plt.show()
      
      
      image.png
    2. 保存到本地

      • 使用savefig,plt.savefig("保存路径文件名")
      from matplotlib import pyplot as plt
      fig = plt.figure(figsize=(20, 8), dpi=80)
      x = range(2, 26, 2)
      y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
      plt.plot(x, y)
      # 保存图片
      plt.savefig("./t1.png")
      
    3. 描述信息,比如x轴和y轴分别表示什么,这个图表示什么

      • x轴的描述信息使用:plt.xlabel()
      • y轴的描述信息使用:plt.ylabel()
      • 图的描述信息使用:plt.title()
    4. 设置x或者y轴上数字和字符串对应

      • x轴使用:plt.xticks("数字",“字符串”)
      • y轴使用:plt.yticks("数字",“字符串”)
    5. 显示中文(matplotlib不支持中文显示)

      • 从matplotlib中导入font_manager的包
      • 查看系统中支持的中文字体
      • my_font=font_manager.fontProperties(fname="字体路径")
      • 在需要使用中文显示的地方加入:fontproperties=my_font
    6. 线条的样式(比如颜色,透明度等)

      • 在绘制的时候指定即可,即在plt.plot()中
      • 线条风格:linestyle='--'
        字符 线条风格
        - 实线
        -- 虚线
        -. 点划线
        : 点虚线
      • 线条粗细:linewidth=5
      • 透明度:alpha=0.5
      • 设置线条颜色:color='r',也可以使用16进制表示颜色,也可以使用英文。
        字符 颜色
        r 红色
        g 绿色
        b 蓝色
        w 白色
    7. 在一张图中绘制多个折线

      • 需要多少个线,就plot多少次
    8. 设置图例

      • 绘制多个折线之后,无法看出哪条折线代表什么意思,因此需要使用图例
      • 首先在plt.plot()中添加label,区别不同的折线
      • plt.legend(prop=my_font,loc="'best")
      • 通过prop指定图例的字体
      • 通过loc指定图例的位置,默认右上角
    9. 显示网格

      • plt.grid()
  • 例题:如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
    y = [random.randint(20,35) for i in range(120)]

    from matplotlib import pyplot as plt
    import random
    from matplotlib import font_manager
    # 设置中文显示,fname表示字体的路径。
    # 在需要显示中文的地方加上fontproperties = my_font
    my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")
    
    y = [random.randint(20,35) for i in range(120)]
    x = range(0, 120)
    
    fig = plt.figure(figsize=(20,8),dpi=80)
    _x = list(x)
    # _xtick_labels = ["hello,{}".format(i) for i in _x]
    _xtick_labels = ["10点{}分".format(i) for i in range(60) ]
    _xtick_labels += ["11点{}分".format(i) for i in range(60)]
    # 让列表x中的数据和_xtick_labels上的数据都传入,最终会在x轴上一一对应显示
    # 两组数据的长度必须一样,否则不能完全覆盖整个轴
    # [::5]使用列表切片,每隔5个选一个数据进行展示
    # rotation=45表示旋转45°,这样字符串之间不会覆盖
    plt.xticks(_x[::5], _xtick_labels[::5],rotation = 45, fontproperties = my_font)
    
    plt.xlabel("时间", fontproperties = my_font)
    plt.ylabel("温度(ºC)",fontproperties = my_font)
    plt.title("10点到12点每分钟温度的变化情况", fontproperties = my_font)
    plt.plot(x,y)
    plt.show()
    

结果展示:


10点到12点气温折线图
  • 例题:假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
    y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
    要求:
    y轴表示个数
    x轴表示岁数,比如11岁,12岁等
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")

x = range(11, 31)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

fig = plt.figure(figsize=(20,8), dpi=80)

_x = x
_xtick_labels = ["{}岁".format(i) for i in _x]
plt.xticks(x, _xtick_labels, fontproperties = my_font)

plt.title("11岁到30之间每年交的女朋友数量",fontproperties = my_font)

# 绘制网格
plt.grid(alpha = 0.1)

plt.plot(x, y)
plt.show()

结果展示:
image.png
  • 例题:假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势
    y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
    y_2 = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
    要求:
    y轴表示个数
    x轴表示岁数,比如11岁,12岁等
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")

x = range(11, 31)
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]

fig = plt.figure(figsize=(20,8), dpi=80)
plt.plot(x, y_1,label="自己")
plt.plot(x, y_2, label="同桌")
_x = x
_xtick_labels = ["{}岁".format(i) for i in _x]
plt.xticks(x, _xtick_labels, fontproperties = my_font)

plt.title("11岁到30之间每年交的女朋友数量",fontproperties = my_font)

plt.legend(prop = my_font,loc = "best")

# 绘制网格
plt.grid(alpha = 0.5)

plt.show()

结果展示:
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 1读取数据import pandas as pdunrate = pd.read_csv('unrate.csv'...
    德先森的书阅读 714评论 1 1
  • 一、概述 深度学习的一个重要手段是训练数据和训练过程的可视化,因此,我们关于深度学习的系列介绍文章就从Matplo...
    aoqingy阅读 6,012评论 0 24
  • 自学整理记录,大神见笑 最流行的Python底层绘图库,主要做数据可视化图表,模仿MATLAB构建,名字也取自MA...
    岑洋阅读 724评论 0 0
  • 先看画折线图 观察两组数据的关联关系 我们举例,有两组数据,一组数据是dgp 一组是对应的年份。那么我们可以画出年...
    NoValue阅读 12,390评论 2 3
  • 前述:Python程序设计可以利用多种方法实现对图像和图像的呈现和处理,在这是利用Python3.x自带的tkin...
    IIronMan阅读 8,814评论 0 8