matplotlib的参数配置:http://t.csdn.cn/TiI79
使用pyplot
的plot
()函数绘制折线图.plot函数的语法格式如下:
plot(x,y,fmt,scalex=True,scaley=True,data=None,label=None)
根据上表的数据,将日期这一列作为x轴的数据,将最高气温和最低气温两列的数据作为y轴的数据,具体代码如下:
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,color="m")
plt.plot(x, y_min,color='r')
plt.grid()
plt.show()
以上代码首先导入了 matplotlib.pyplot 和 numpy 模块,分别将这两个模块重命名为 plt 和 np,其次将表中的数据分别作为 x 轴和 y 轴的数据,然后连续两次调用 plot() 函数分别绘 制了两条折线,最后调用 show() 函数进行展示
图 中,x 轴代表日期,y 轴代表温度,位于上方的紫色折线和下方的红色折线分别 代表最高温度和最低温度。由图 2-1 可知,北京市未来 15 天的最高气温和最低气温都呈现 逐步下降后反弹的趋势
使用 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)
该函数常用参数的含义如下。
示例代码:
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(5)#生成array([0, 1, 2, 3, 4])
y=np.array([19,58,44,38,74])
# 设置柱形的宽度
bar_width=0.3
# 绘制柱形图
plt.bar(x,y,tick_label=["a",'b','c','d','e'],width=bar_width)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(5)#生成array([0, 1, 2, 3, 4])
y1=np.array([19,58,44,38,74])
y2=np.array([38,59,64,78,54])
# 设置柱形的宽度
bar_width=0.3
# 绘制柱形图
plt.bar(x,y,tick_label=["a",'b','c','d','e'],width=bar_width)
plt.bar(x+bar_width,y2,width=bar_width)
plt.show()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mYgp949R-1664604503133)(image-20221001131914204.png)]
在使用 pyplot 的 bar() 函数绘制图表时,可以通过给 bottom 参数传值的方式控制柱形的 y 值,使后绘制的柱形位于先绘制的柱形的上方。例如,使用 bar() 函数绘制由两组柱形堆叠而 成的堆积柱形图,代码如下。
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(5)#生成array([0, 1, 2, 3, 4])
y1=np.array([19,58,44,38,74])
y2=np.array([38,59,64,78,54])
# 设置柱形的宽度
bar_width=0.3
# 绘制柱形图
plt.bar(x,y,tick_label=["a",'b','c','d','e'],width=bar_width)
plt.bar(x,y2,bottom=y1,width=bar_width)#把y1放在底部
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(5)#生成array([0, 1, 2, 3, 4])
y1=np.array([19,58,44,38,74])
y2=np.array([38,59,64,78,54])
# 设置柱形的宽度
bar_width=0.3
# 这里是误差
error=[2,1,2.5,3,4]
# 绘制柱形图
plt.bar(x,y,tick_label=["a",'b','c','d','e'],width=bar_width)
plt.bar(x,y2,bottom=y1,width=bar_width,yerr=error)#把y1放在底部
plt.show()
随着互联网与电子商务的快速发展,人们的消费模式发生了翻天覆地的变化,越来越多 的消费者选择网络购物。阿里巴巴集团作为中国电商的引领者,其旗下的淘宝和天猫是深 受消费者欢迎的网购平台。据阿里巴巴集团财务统计,2013—2019 财年淘宝和天猫平台的 GMV(Gross Merchandise Volume,一定时间内的成交总额)如下表所示
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
import numpy as np
import matplotlib.pyplot as plt
x=np.array([2013,2014,2015,2016,2017,2018,2019])
y=np.array([10770,16880,24440,30290,37670,48200,57270])
# 设置柱形的宽度
bar_width=0.3
# 设置标签
plt.xlabel("财年",size=15)
plt.ylabel("GMV 单位:亿元",size=15,rotation=90)
# 绘制柱形图
plt.bar(x,y,width=bar_width,color='m')
plt.show()
使用 pyplot 的 barh() 函数可以快速绘制条形图或堆积条形图,barh() 函数的语法格式如下所示 :
barh(y, width, height=0.8, left=None, align='center')
该函数常用参数的含义如下。
简单条形图:
import numpy as np
import matplotlib.pyplot as plt
y = np.arange(5)
x1 = np.array([10, 8, 7, 11, 13])
# 条形的高度
bar_height = 0.3
# 绘制条形图
plt.barh(y, x1, tick_label=['a', 'b', 'c', 'd', 'e'], height=bar_height)
plt.show()
y = np.arange(5)
x1 = np.array([10, 8, 7, 11, 13])
x2 = np.array([9, 6, 5, 10, 12])
# 条形的高度
bar_height = 0.3
# 根据多组数据绘制条形图
plt.barh(y, x1, tick_label=['a', 'b', 'c', 'd', 'e'], height=bar_height)
plt.barh(y+bar_height, x2, height=bar_height)
plt.show()
plt.barh(y, x1, tick_label=['a', 'b', 'c', 'd', 'e'], height=bar_height)
plt.barh(y, x2, left=x1, height=bar_height)
plt.show()
error = [2, 1, 2.5, 2, 1.5]
plt.barh(y, x1, tick_label=['a', 'b', 'c', 'd', 'e'], height=bar_height)
plt.barh(y, x2, left=x1, height=bar_height, xerr=error)
plt.show()
如今已进入信息时代,网络购物已经成为人们日常生活的一部分,改变着人们的消费模 式和习惯,成为拉动居民消费的重要渠道。因此,研究网购消费对于研判经济形势、促进经 济转型升级有着重要的意义。2018 年国家统计局北京调查总队从网购活跃的人群中抽取了 771 个样本,并根据这些样本测算用户网购替代率(网购用户线上消费对线下消费的替代比 率)的情况,具体如下表所示:
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)
labels = [" 家政、家教、保姆等生活服务 ", " 飞机票、火车票 ", " 家具 ", " 手机、手机配件 ",
" 计算机及其配套产品 ", " 汽车用品 ", " 通信充值、 游戏充值 ", " 个人护理用品 ",
" 书报杂志及音像制品 ", " 餐饮、 旅游、 住宿 ", " 家用电器 ",
" 食品、 饮料、 烟酒、 保健品 ", " 家庭日杂用品 ", " 保险、 演出票务 ",
" 服装、鞋帽、家用纺织品 ", " 数码产品 ", " 其他商品和服务 ", " 工艺品、收藏品 "]
# 绘制条形图
plt.barh(y, x, tick_label=labels, align="center", height=0.6)
plt.show()
使用 pyplot 的 stackplot() 函数可以快速绘制堆积面积图,stackplot() 函数的语法格式如下 所示 :
stackplot(x, y, labels=(), baseline='zero', data=None, *args, **kwargs)
该函数常用参数的含义如下。
例如,使用 stackplot() 函数绘制由 3 条折线及下方填充区域堆叠的堆积面积图,代码如下
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(6)
y1 = np.array([1,4,3,5,6,7])
y2 = np.array([1,3,4,2,7,6])
y3 = np.array([3,4,3,6,5,5])
# 绘制堆积面积图
plt.stackplot(x, y1, y2, y3)
plt.show()
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
import matplotlib.pyplot as plt
x = np.arange(1, 13)
y_a = np.array([198, 215, 245, 222, 200, 236, 201, 253, 236, 200, 266, 290])
y_b = np.array([203, 236, 200, 236, 269, 216, 298, 333, 301, 349, 360, 368])
y_c = np.array([185, 205, 226, 199, 238, 200, 250, 209, 246, 219, 253, 288])
plt.xlabel("月份")
plt.ylabel("物流费用")
# 绘制堆积面积图
plt.stackplot(x, y_a, y_b, y_c)
plt.show()
参考链接:Matplotlib — Visualization with Python
参考书籍:Python数据可视化%20(黑马程序员