栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python学习】matplotlib学习总结——条形图

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python学习】matplotlib学习总结——条形图

  • 绘制条形图

举个例子:

  • 任务:绘制2017年电影票房前20的条形图。
  • 数据:
  • x = [“战狼2”,“速度与激情8”,“功夫瑜伽”,“西游伏妖篇”,“变形金刚5:最后的骑士”,“摔跤吧!爸爸”,“加勒比海盗5:死无对证”,“金刚:骷髅岛”,“极限特工:终极回归”,“生化危机6:终章”,“乘风破浪”,“神偷奶爸3”,“智取威虎山”,“大闹天竺”,“金刚狼3:殊死一战”,“蜘蛛侠:英雄归来”,“悟空传”,“银河护卫队2”,“情圣”,“新木乃伊”]
  • y = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]
    • 1、x轴坐标为电影名称
    • 2、y轴为票房(单位:亿)
    • 3、设置图片大小和分辨率
    • 4、设置x轴刻度、
    • 5、添加x轴、y轴、title的标签
    • 6、添加图例
    • 7、设置网格
    • 8、保存图片
  • 绘制纵向的条形图
from matplotlib import pyplot as plt
import matplotlib

# 设置中文
matplotlib.rc('font',family='SimSun')

# 电影名称
# 对于长一点的字符串,可以采用n换行
x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:n最后的骑士","摔跤吧!爸爸","加勒比海盗5:n死无对证","金刚:骷髅岛","极限特工:n终极回归","生化危机6:n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:n殊死一战","蜘蛛侠:n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]

# 票房(单位 亿)
y = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]

# 设置图表大小
plt.figure(figsize=(20,8),dpi=80)

# 设置x轴刻度
_x = range(len(x))
_x_labels = x
plt.xticks(_x,_x_labels,rotation=45)

# 设置x轴label
plt.xlabel("电影")

# 设置y轴label
plt.ylabel("票房 单位:亿")

# 设置标题title
plt.title("2017年票房前20的条形图")

# 绘制条形图,width:0-1
plt.bar(x,y,width=0.5,color="orange",label="2017年票房")

# 设置图例
plt.legend(loc="upper right")

# 设置网格
plt.grid(alpha=0.3)

# 保存图表
plt.savefig("./box-office.svg")

# 显示图表
plt.show()

  • 绘制横向的条形图
    • 横向的条形图注意事项:
      • x轴和y轴需要调换顺序
      • x轴和y轴的ticks需要调换顺序
      • plt.barh 里面宽度需要由height 设置,原本x和y的位置也需要调换
from matplotlib import pyplot as plt
import matplotlib

# 设置中文
matplotlib.rc('font',family='SimSun')

# 电影名称
y = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]

# 票房(单位 亿)
x = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]

# 设置图表大小
plt.figure(figsize=(20,8),dpi=80)

# 设置y轴刻度
_y = range(len(y))
_y_labels = y
plt.yticks(_y,_y_labels,rotation=0)

# 设置x轴label
plt.xlabel("票房 单位:亿")

# 设置y轴label
plt.ylabel("电影")

# 设置标题title
plt.title("2017年票房前20的条形图")

# 绘制条形图,height:0-1
plt.barh(y,x,height=0.5,color="orange",label="2017年票房")

# 设置图例
plt.legend(loc="upper right")

# 设置网格
plt.grid(alpha=0.3)

# 保存图表
plt.savefig("./box-office.svg")

# 显示图表
plt.show()

  • 任务:
    • 已知2017-09-14、2017-09-15、2017-09-16三天的票房,通过条形图进行对比显示
  • 数据:
    • y_14 = [2358,399,2358,362]
    • y_15 = [12357,156,2045,168]
    • y_16 = [15746,312,4497,319]
    • x = [“猩球崛起3:终极之战”,“敦刻尔克”,“蜘蛛侠:英雄归来”,“战狼2”]
  • 代码如下:
from matplotlib import pyplot as plt
import matplotlib

# 设置中文
matplotlib.rc('font',family='SimSun')

# 2017-09-14 票房数据
y_14 = [2358,399,2358,362]

# 2017-09-15 票房数据
y_15 = [12357,156,2045,168]

# 2017-09-16 票房数据
y_16 = [15746,312,4497,319]

# 电影名称
x = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]

# 设置图表大小
plt.figure(figsize=(20,8),dpi=80)


bar_width = 0.3 # 条形图的宽度

# 设置每个条形图的x轴数据
x_14 = list(range(len(x)))                # [0, 1, 2, 3]
x_15 = [i+ bar_width for i in x_14]      # [0.3, 1.3, 2.3, 3.3]
x_16 = [i+ bar_width * 2 for i in x_14]  # [0.6, 1.6, 2.6, 3.6]

# 设置x轴的刻度
plt.xticks(x_15,x)  # 以中心条形图x_15的x轴数据,可以使电影名称居中

# 绘制 2017-09-14 票房数据 条形图
plt.bar(x_14,y_14,width=0.3,label="2017-09-14票房数据")

# 绘制 2017-09-15 票房数据 条形图
plt.bar(x_15,y_15,width=0.3,label="2017-09-15票房数据")

# 绘制 2017-09-16 票房数据 条形图
plt.bar(x_16,y_16,width=0.3,label="2017-09-16票房数据")

# 设置图例
plt.legend(loc="upper right")

# 设置x轴label
plt.xlabel("电影")

# 设置y轴label
plt.ylabel("票房")

# 设置标题title
plt.title("2017年9月14-16号电影票房数据对比条形图")

# 设置网格
plt.grid(alpha=0.3)

# 保存图表
plt.savefig("./1.svg")

# 显示条形图
plt.show()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849208.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号