Matplotlib 绘制柱状图 - 电影票房

运行环境 : python 3.6.0 

 

用 Matplotlib 的 bar 和 barh 方法绘制散点图 , 绘制票房统计 , 数据来源于 http://58921.com/alltime/2019

核心代码 (bar方法) :

# -*- encoding: utf-8 -*-
# @Version  : Python 3.6.0
# @Function : 本代码为利用 Matplotlib 库 画柱状图
 
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties  # 字体属性设置
 
font = FontProperties(fname=r"C:\windows\fonts\simsun.ttc", size=14)  # 使用本地字体(Windows操作系统)
 
names = ['哪吒之魔童降世', '流浪地球', '复仇者联盟4:终局之战', '我和我的祖国', '疯狂的外星人', '中国机长', '飞驰人生', '烈火英雄', '速度与激情:特别行动', '蜘蛛侠:英雄远征',
         '扫毒2天地对决', '大黄蜂', '惊奇队长', '比悲伤更悲伤的故事', '哥斯拉2:怪兽之王', '阿丽塔:战斗天使', '攀登者', '银河补习班', '狮子王', '反贪风暴4 ']  # 单位(亿)
box_office = [49.26, 46.18, 42.05, 23.36, 21.83, 21.23, 17.03, 16.74, 14.18, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27,
              8.88, 8.64, 8.63, 8.23, 7.88]

plt.figure(figsize=[20,8],dpi=80)
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.4)  # 设置图像位置
plt.bar(names, box_office, width=0.3, color='green')
plt.xlabel("影视名称",fontproperties='SimHei', size=16)
plt.ylabel("总票房(单位:亿)",fontproperties='SimHei', rotation=90, size=16)
plt.title("2019电影票房排行榜",fontproperties='SimHei', size=18)
plt.xticks(names, fontproperties='SimHei', rotation=90, size=16)

plt.savefig('./2019电影票行排行.jpg')
plt.show()


运行结果展示 : 

核心代码 (barh方法) :

# -*- encoding: utf-8 -*-
# @Version  : Python 3.6.0
# @Function : 本代码为利用 Matplotlib 库 画柱状图
 
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties  # 字体属性设置
 
font = FontProperties(fname=r"C:\windows\fonts\simsun.ttc", size=14)  # 使用本地字体(Windows操作系统)
 
names = ['哪吒之魔童降世', '流浪地球', '复仇者联盟4:终局之战', '我和我的祖国', '疯狂的外星人', '中国机长', '飞驰人生', '烈火英雄', '速度与激情:特别行动', '蜘蛛侠:英雄远征',
         '扫毒2天地对决', '大黄蜂', '惊奇队长', '比悲伤更悲伤的故事', '哥斯拉2:怪兽之王', '阿丽塔:战斗天使', '攀登者', '银河补习班', '狮子王', '反贪风暴4 ']  # 单位(亿)
box_office = [49.26, 46.18, 42.05, 23.36, 21.83, 21.23, 17.03, 16.74, 14.18, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27,
              8.88, 8.64, 8.63, 8.23, 7.88]

plt.figure(figsize=[20,15],dpi=80)
plt.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)  # 设置图像位置
plt.barh(names, box_office, height=0.3, color='green')  # 绘制条形图
plt.xlabel("总票房(单位:亿)",fontproperties='SimHei', size=16)
plt.ylabel("影视名称",fontproperties='SimHei', rotation=90, size=16)
plt.title("2019电影票房排行榜",fontproperties='SimHei', size=18)  # 标题
plt.yticks(names, fontproperties='SimHei', rotation=0, size=16)  # y轴
plt.grid(alpha=0.3)  # 绘制网格

# 反转坐标轴
ax = plt.gca()
ax.invert_yaxis()

plt.savefig('./2019电影票行排行.jpg')
plt.show()

运行结果展示 : 

 

票房对比 :

核心代码 (数据来源 http://www.cbooo.cn/movieday) :

# -*- encoding: utf-8 -*-
# @Version  : Python 3.6.0
# @Function : 本代码为利用 Matplotlib 库 画柱状图
 
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties  # 字体属性设置
 
font = FontProperties(fname=r"C:\windows\fonts\simsun.ttc", size=14)  # 使用本地字体(Windows操作系统)
 
names = ["猩球崛起3:终极之战", "敦刻尔克", "蜘蛛侠英雄归来", "战狼2"]
b_16 = [15746, 312, 4497, 319]
b_15 = [12357, 156, 2045, 168]
b_14 = [2358, 399, 2358, 362]

bar_width = 0.15  # 单个柱状图的宽度

# x_14 = list(range(len(names)))
# x_15 = [i+bar_width for i in x_14]
# x_16 = [i+bar_width*2 for i in x_14]
day_01 = np.arange(len(names))
day_02 = day_01 + bar_width
day_03 = day_01 + bar_width*2
print(bar_width*2)
print(day_01)
print(day_02)
print(day_03)

plt.figure(figsize=[20,15], dpi=80)  # 设置图形大小
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)  # 设置图像位置

plt.bar(day_01, b_14, width=bar_width, label="9月14日")
plt.bar(day_02, b_15, width=bar_width, label="9月14日")
plt.bar(day_03, b_16, width=bar_width, label="9月14日")

# 设置图例
plt.legend(prop=font, loc='upper right')

# 设置x轴的刻度
plt.xticks(range(len(names)), names, fontproperties='SimHei', size=16, rotation=0)
plt.title('电影票房多日统计对比', fontproperties='SimHei', size=20, rotation=0)
plt.savefig('./票房对比.jpg')
plt.show()

运行结果展示 :  

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值