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

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

python 复制代码
# 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库来绘制一个横向的条形图,显示电影的名称和它们的票房收入

python 复制代码
# 导入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库来绘制一个三组条形图的图表

python 复制代码
# 指定编码为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轴的刻度,并显示了图表。 效果如下:

相关推荐
Am心若依旧40916 分钟前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++
明月看潮生18 分钟前
青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
开发语言·青少年编程·单元测试·编程与数学·goweb
大G哥28 分钟前
java提高正则处理效率
java·开发语言
ROBOT玲玉32 分钟前
Milvus 中,FieldSchema 的 dim 参数和索引参数中的 “nlist“ 的区别
python·机器学习·numpy
VBA633738 分钟前
VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
开发语言
轩辰~40 分钟前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
小_太_阳1 小时前
Scala_【1】概述
开发语言·后端·scala·intellij-idea
向宇it1 小时前
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
开发语言·unity·c#·编辑器·游戏引擎
Kai HVZ1 小时前
python爬虫----爬取视频实战
爬虫·python·音视频
古希腊掌管学习的神1 小时前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode