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