使用matplotlib绘制简单图表

 前言

  matplotlib是Python中众多数据可视化库的鼻祖,其设计风格与20世纪80年代设计的商业化程序语言MATLAB十分接近,具有很多强大且复杂的可视化功能。matplotlib包含多种类型的API(Application Program Interface,应用程序接口),可以采用多种方式绘制图表并对图表进行定制。

   matplotlib实际上是一个面向对象的绘图库,它所绘制的图表元素均对应一个对象。matplotlib库仅需开发人员编写几行代码即可绘制一个图表,包括折线图、柱形图或堆积柱形图、条形图或堆积条形图、堆积面积图、直方图、饼图或圆环图、散点图或气泡图、箱形图、雷达图、误差棒图。


一.使用plot()绘制折线图

使用pyplot的plot()函数可以快速绘制折线图。plot()函数的语法格式如下所示:

plot(x, y, fmt, scalex=True, scaley=True, data=None, label=None,
     *args, **kwargs)

(1)多次调用plot()函数来绘制具有多个线条的折线图,示例代码如下:

plt.plot(x1,y1) 
plt.plot(x2,y2)


(2)调用plot()函数时传入一个二维数组来绘制具有多个线条的折线图。例如,将二维数组arr的第一行数据作为x轴的数据、其他行数据全部作为y轴的数据,代码如下:

arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,1211)
plt.plot(arr[0], arr[1:])


(3)调用plot时传组数据来绘制具有多个线条的折线图,示例代码如下: 

plt.plot(x1,y1,x2,y2)


实例1:未来15天最高气温和最低气温

北京市未来15天的最高气温和最低气温
日期 最高气温最低气温
9月4日3219
9月5日3319
9月6日34 20
9月7日3422
9月8日3322
9月9日3121
9月10日3022
9月11日2916
9月12日3018
9月13日2918
9月14日2617
9月15日2314
9月16日2115
9月17日2516
9月18日3116

使用plot()函数绘制反映最高气温和最低气温趋势的折线图及平均气温,具体代码如下:

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])
y_med = np.array(y_max + y_min) /2.0

plt.plot(x,y_max)
plt.plot(x,y_min)
plt.plot(x,y_med)

plt.show()

二.使用bar()绘制柱形图

使用pyplot的bar()函数可以快速绘制柱形图或堆积柱形图。bar()函数的语法格式如下所示:

bar(x, height, width=0.8, bottom=None, align='center',
    data=None, tick_label=None, xerr=None, yerr=None,
    error_kw=None,**kwargs)

实例2:2013—2019财年某电商平台的GMV

2013—2019财年某电商平台的GMV
 财年

淘宝GMV

拼多多GMV 
FY2013107709770
FY20141678014780
FY20152444024400
FY20163092028920
FY20173767038670
FY20184820049200
FY2019

57270

60270

使用bar()函数绘制各年份对应的GMV的柱形图,具体代码如下:

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(1,8)
y1 = np.array([10770, 16780, 24440, 30920, 37670, 48200, 57270])
y2 = np.array([9770, 14780, 23440, 28920, 38670, 49200, 60270])
bar_width = 0.3

plt.bar(x, y1, tick_label=["FY2013", "FY2014", 
                           "FY2015", "FY2016", 
                           "FY2017", "FY2018", "FY2019"],color="orange",width=bar_width)
plt.bar(x+bar_width, y2, color="red",width=bar_width)
plt.show()

三.绘制条形图

使用pyplot的barh()函数可以快速绘制条形图,barh()函数的语法格式如下所示:

barh(y, width, height=0.8, left=None, align='center', *,
     **kwargs)

实例3:各商品种类的网购替代率

各商品种类的网购替代率
商品种类  替代率
家政、家教、保姆等生活服务95.9%
飞机票、火车票95.1%
家具93.5%
手机、手机配件92.4%
计算机及其配套产品89.3%
汽车用品89.2%
通信充值、游戏充值86.5%
个人护理用品86.3%
书报杂志及音像制品86.0%
餐饮、旅游、住宿85.6%
家用电器85.4%
食品、饮料、烟酒、保健品83.5%
家庭日杂用品82.6%
保险、演出事务81.6%
服装、鞋帽、家用纺织品79.8%
数码产品76.5%
其他商品和服务76.3%
工艺品、收藏品67.0%

各商品种类的网购替代率如上图所示,请给条形图添加3%的误差棒。示例代码如下:

import matplotlib.pyplot as plt
import numpy as np
# 显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.array([0.959, 0.951, 0.935, 0.924, 0.893,
              0.892, 0.865, 0.863, 0.860, 0.856,
              0.854, 0.835, 0.826, 0.816, 0.798,
              0.765, 0.763, 0.67])
y = np.arange(1,19)
height=0.3
error = 0.03
labels = ["家政、家教、保姆等生活服务","飞机票、火车票","家具","手机、手机配件",
          "计算机及其配套产品","汽车用品","通信充值、游戏充值","个人护理用品",
          "书报杂志及音像制品","餐饮、旅游、住宿","家用电器",
          "食品、饮料、烟酒、保健品","家庭日志用品","保险、演出事务",
          "服装、鞋帽、家用纺织品","数码产品","其他商品和服务","工艺品、收藏品"]
#绘制条形图
plt.barh(y, x, tick_label=labels, align="center", xerr=error)

plt.show()

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值