使用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轴的刻度,并显示了图表。 效果如下:

相关推荐
油丶酸萝卜别吃2 小时前
utils.js 说明文档
开发语言·javascript·ecmascript
leisoo80975 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
WangYan20225 小时前
基于XGBoost与AI的生态—地学多源数据建模:植被与土地利用识别、土壤碳氮空间预测、生物多样性驱动机制、土壤微生物功能预测、生态退化与风险识别
python·机器学习·xgboost
不会代码的小猴5 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
一只旭宝6 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
金銀銅鐵7 小时前
[Python] 借助 turtle 逐字展示唐诗《金缕衣》
python
coder!mq8 小时前
说几个常见的语法糖?
java·开发语言·算法
gugucoding8 小时前
38. 【Java】Stream API(下):高级操作与性能
java·开发语言
Lhan.zzZ8 小时前
在 Visual Studio 2022 中打造可扩展的动态链接库模块:从零搭建到原理解析
开发语言·c++·visual studio
心平气和量大福大9 小时前
android-实例-蒲公英-更新与安装-5-签名与生成APK
android·java·开发语言