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

相关推荐
数据分析螺丝钉8 分钟前
力扣第240题“搜索二维矩阵 II”
经验分享·python·算法·leetcode·面试
五味香9 分钟前
C++学习,信号处理
android·c语言·开发语言·c++·学习·算法·信号处理
梓䈑25 分钟前
【C语言】自定义类型:结构体
c语言·开发语言·windows
鱼跃鹰飞42 分钟前
Leecode热题100-295.数据流中的中位数
java·服务器·开发语言·前端·算法·leetcode·面试
小蜗笔记1 小时前
在Python中实现多目标优化问题(7)模拟退火算法的调用
开发语言·python·模拟退火算法
TANGLONG2221 小时前
【C语言】数据在内存中的存储(万字解析)
java·c语言·c++·python·考研·面试·蓝桥杯
杨荧1 小时前
【JAVA开源】基于Vue和SpringBoot的水果购物网站
java·开发语言·vue.js·spring boot·spring cloud·开源
知识分享小能手1 小时前
mysql学习教程,从入门到精通,SQL 修改表(ALTER TABLE 语句)(29)
大数据·开发语言·数据库·sql·学习·mysql·数据分析
魏大橙1 小时前
Fastjson反序列化
开发语言·python