使用matplotlib库在Python中绘制条形图

一.使用matplotlib库在Python中绘制一个条形图,展示了2017年内地电影的票房排行榜

# coding: utf-8
from matplotlib import pyplot as plt  # 导入matplotlib库中的pyplot模块,并重命名为plt
from matplotlib import font_manager  # 导入font_manager模块,用于设置字体
import matplotlib  # 导入matplotlib库

# 设置字体,这里是SimHei字体,粗体,大小为8
font = {'family': 'SimHei',
        'weight': 'bold',
        'size': 8,
        }
matplotlib.rc('font', **font)  # 应用字体设置

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

# 设置图形大小,dpi是每英寸点数,figsize是图像的宽和高
plt.figure(figsize=(20, 8), dpi=80)

# 绘制条形图,x轴数据为电影名称的索引,y轴数据为电影票房,条形宽度为0.3
plt.bar(range(len(a)), b, width=0.3)

# 添加y轴标签,显示"单位:亿",使用指定的字体
plt.ylabel("单位:亿", fontproperties=font)

# 添加图表标题,显示"2017年内地电影票房排行榜",使用指定的字体
plt.title("2017年内地电影票房排行榜", fontproperties=font)

# 添加x轴标签,显示"电影名称",使用指定的字体
plt.xlabel("电影名称", fontproperties=font)

# 设置x轴刻度,使用电影名称列表a,旋转45度,使用指定的字体
plt.xticks(range(len(a)), a, fontproperties=font, rotation=45)

# 保存图片为svg格式
plt.savefig("./bar.svg")

# 显示图像
plt.show()

这段代码首先设置了图像的大小和字体,然后定义了电影名称列表和对应的票房列表,接着绘制了条形图,设置了x轴和y轴的标签,设置了x轴的刻度,保存了图像,并显示了图像。效果如下:

二.使用matplotlib库来绘制一个横向的条形图,显示电影的名称和它们的票房收入

# 导入matplotlib库中的pyplot模块和font_manager模块
from matplotlib import pyplot as plt
from matplotlib import font_manager
import matplotlib

# 设置字体属性
font = {'family': 'SimHei',  # 字体类型为黑体
        'weight': 'bold',    # 字体加粗
        'size': 8,           # 字体大小为8
        }
# 应用字体属性
matplotlib.rc('font', **font)

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

# 电影票房列表
b = [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]

# 设置图形大小,dpi为分辨率
plt.figure(figsize=(20, 8), dpi=80)

# 绘制条形图,设置条形高度,对齐方式,颜色
plt.barh(range(len(a)), b, height=0.3, align="center", color="orange")

# 设置y轴刻度,使用电影名称,并应用字体属性
plt.yticks(range(len(a)), a, fontproperties=font)

# 添加网格,设置透明度
plt.grid(alpha=0.3)

# 显示图形
plt.show()

这段代码首先设置了图形的字体属性,然后定义了电影名称和票房列表。接着,它设置了图形的大小和分辨率,并绘制了条形图。y轴的刻度被设置为电影名称,并添加了网格。最后,图形被显示出来。 效果如下:

三.使用matplotlib库来绘制一个三组条形图的图表 

# 指定编码为utf-8
# coding: utf-8

# 导入matplotlib库中的pyplot模块,并重命名为plt
from matplotlib import pyplot as plt
# 导入matplotlib库中的font_manager模块
from matplotlib import font_manager

# 创建一个字体对象,使用微软雅黑字体,大小为10
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\msyh.ttc', size=10)

# 定义四个电影名称
a = ["猩球崛起3:终极之战", "敦刻尔克", "蜘蛛侠:英雄归来", "战狼2"]
# 定义三个日期对应的电影票房数据
b_16 = [15746, 312, 4497, 319]
b_15 = [12357, 156, 2045, 168]
b_14 = [2358, 399, 2358, 362]

# 定义条形图的宽度
bar_width = 0.2

# 计算每个日期的x轴位置
x_14 = list(range(len(a)))
x_15 = [i + bar_width for i in x_14]
x_16 = [i + bar_width * 2 for i in x_14]

# 设置图形大小,dpi为分辨率
plt.figure(figsize=(20, 8), dpi=80)

# 绘制第一组条形图,位置在x_14,高度为b_14,宽度为bar_width,标签为"9月14日"
plt.bar(range(len(a)), b_14, width=bar_width, label="9月14日")
# 绘制第二组条形图,位置在x_15,高度为b_15,宽度为bar_width,标签为"9月15日"
plt.bar(x_15, b_15, width=bar_width, label="9月15日")
# 绘制第三组条形图,位置在x_16,高度为b_16,宽度为bar_width,标签为"9月16日"
plt.bar(x_16, b_16, width=bar_width, label="9月16日")

# 设置图例,使用自定义字体
plt.legend(prop=my_font)
# 设置x轴的刻度,位置在x_15,标签为电影名称a,使用自定义字体
plt.xticks(x_15, a, fontproperties=my_font)
# 显示图表
plt.show()

这段代码首先定义了一些数据,然后计算了每个日期的x轴位置,接着设置了图形的大小和分辨率,然后绘制了三组条形图,最后设置了图例和x轴的刻度,并显示了图表。 效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NJU_AI_NB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值