使用柱状图显示三日电影的票房信息

要显示的数据为2018年12月7日-9日四场电影的票房信息

四场电影分别为:无名之辈,狗十三,毒液:知名守卫者,憨豆特工3

2018年12月7日四场电影票房分别为:[991.94, 375.64, 200.48, 73.27]

2018年12月8日四场电影票房分别为:[1908.22, 547.61, 466.23, 193.8]

2018年12月9日四场电影票房分别为:[1532.87, 525.63, 332.35, 170.57]

本次绘图思路:

1、x轴使用日期作为度量值,y轴使用票房作为度量值;所有要对原始数据进行相应的修改

2、使用plt.figure()函数来调整图片的大小

  本文使用说明:plt.figure(figsize=(20, 8), dpi=80);意思是x轴长度为20英尺,y轴长度为8英尺,dpi是用来设置像素的
3、使用plt.bar()函数来绘制柱状图,该函数可以多次调用,有叠加效果

  本文使用说明:plt.bar(x_1, y_1, width=bar_width, label="无名之辈", color='#87CEFA');这个函数可以调用的参数有很多,其中x,y值为必备的参数,x,y的长度必须一一对应才能绘制,width设置柱状图的宽度,label设置这个柱状图的标签,要调用plt.legend()函数才能显示出来,color这个参数是设置柱状图的颜色的,可以直接写颜色的名称,但是本人推荐使用颜色代码比较方便,也不会出错。

4、因为matplotlib默认显示不出中文,为了要显示中文,所以要设置自己的字体,设置字体的方式有多种,本文使用的环境为window10,此处设置的方式可以保证对window10环境有效

  先导入相应的包:from matplotlib import font_manager

  my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/simsun.ttc") # 这里面的C:/Windows/Fonts/simsun.ttc为自己电脑存放字体的路径,这样就可以设置任意自己想要的字体了。

  使用字体的方式:在要显示中文的地方,比如:plt.xticks(x_tick, xtick_label, fontproperties=my_font, fontsize=15)中,将fontproperties属性设置为自定义的字体

  注意:plt.legend(prop=my_font, loc=5)函数是将prop属性设置为自定义字体,其他的都是fontproperties属性

5、使用plt.xticks()和plt.yticks函数设置x轴和y轴的刻度信息

  本文使用说明:plt.xticks(x_tick, xtick_label, fontproperties=my_font, fontsize=15);大家可以ctrl+b查看函数源代码。在本文中,x_tick和xtick_label长度一一对应,x_tick是一个列表,意思是在x_tick[i]的下方写上xtick_label[i0]的信息,也就是把你要刻画在x轴上的信息存储在xtick_label列表上,fontproperties属性设置中文不要乱码用的,fontsize设置文字大小,大家调一下就知道怎么用了。

6、使用plt.ylabel()和plt.xlabel()和plt.title()函数设置图片中的标签信息;

7、使用plt.grid(alpha=0.3)函数可以设置图片背后有网格,alpha设置透明度,alpha的取值为0到1,越小网格透明度越高

8、使用plt.text()函数可以在绘制的图片任何地方添加描述信息,本文使用该函数用来显示每日票房的具体数值。该函数感觉非常非常有用,大家可以去看下该函数的用法

9、使用plt.savefig('T2.png')函数可以把绘制的图片保存下来

10、使用plt.show()直接显示该图片

下面就是源代码了,第一次写博客,自己也是刚学matplotlib,如有错误,请各位指出,共同交流共同进步

 1 # coding = utf-8
2 from matplotlib import pyplot as plt
3 from matplotlib import font_manager
4 # 设置自己的字体
5 my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/simsun.ttc")
6
7 # 将数据存储为列表
8 a = ["无名之辈", "狗十三", "毒液:致命守护者", "憨豆特工3"]
9 b_7 = [991.94, 375.64, 200.48, 73.27]
10 b_8 = [1908.22, 547.61, 466.23, 193.8]
11 b_9 = [1532.87, 525.63, 332.35, 170.57]
12
13 # 此处是为了将数据换一种方式存储,一开始b_7存储的是7号的的4部电影的票房数据,经过转换后y1存储了无名之辈的7号,8号,9号的票房数据
14 b = b_7 + b_8 + b_9
15 y_1 = []
16 y_2 = []
17 y_3 = []
18 y_4 = []
19 for i in range(len(b)):
20 if i % 4 == 0:
21 y_1.append(b[i])
22 elif i % 4 == 1:
23 y_2.append(b[i])
24 elif i % 4 == 2:
25 y_3.append(b[i])
26 else:
27 y_4.append(b[i])
28
29 # 此处设置bar_width是为了不要让柱状图重叠
30 # 本来一次plt.bar(x,y)函数绘制一个直方图,然后要绘制4个的话,为了避免重叠掉,就要设置一定的间距
31 bar_width = 0.2
32 x_1 = [i for i in range(3)]
33 x_2 = [i+bar_width for i in x_1]
34 x_3 = [i+bar_width*2 for i in x_1]
35 x_4 = [i+bar_width*3 for i in x_1]
36
37 # 设置图像大小
38 plt.figure(figsize=(20, 8), dpi=80)
39
40 # 绘制直方图
41 plt.bar(x_1, y_1, width=bar_width, label="无名之辈", color='#87CEFA')
42 plt.bar(x_2, y_2, width=bar_width, label="狗十三", color='#ADFF2F')
43 plt.bar(x_3, y_3, width=bar_width, label="毒液:\n致命守护者", color='#FFD700')
44 plt.bar(x_4, y_4, width=bar_width, label="憨豆特工3", color='#FFFACD')
45
46 # 添加图例
47 plt.legend(prop=my_font, loc=5)
48
49 #调整x和y的刻度
50 x_tick = [i+0.1 for i in x_2]
51 xtick_label = ['12月7日', '12月8日', '12月9日']
52 plt.xticks(x_tick, xtick_label, fontproperties=my_font, fontsize=15)
53 plt.yticks(fontsize=15)
54
55 # 添加描述信息
56 # plt.xlabel("日期", fontproperties=my_font, fontsize=20)
57 plt.ylabel("票房(亿元)", fontproperties=my_font, fontsize=20)
58 plt.title("电影票房", fontproperties=my_font, fontsize=20)
59
60 # 绘制网格,alpha设置透明度
61 plt.grid(alpha=0.3)
62
63 # 添加折线图的描述信息,text(x, y, s, fontdict=None, withdash=False, **kwargs)其中s为描述信息的文字
64 xa = x_1 + x_2 + x_3 + x_4
65 yb = y_1 + y_2 + y_3 + y_4
66 for a1, b1 in zip(xa, yb):
67 plt.text(a1, b1, b1, ha='center', va='bottom', fontsize=14)
68
69 plt.savefig('T2.png')
70 plt.show()

显示效果如下图:

使用matplotlib中的bar函数绘制柱状图的更多相关文章

  1. Python Matplotlib 中对于 bar 显示时间的问题

    参考: 官方教程: http://matplotlib.org/1.3.1/users/recipes.html http://stackoverflow.com/questions/13515471 ...

  2. matplotlib中 plt.plot() 函数中**kwargs的参数形式

    plt.plot(x, y, **kwargs) **kwargs的参数大致有如下几种: color: 颜色 linestyle: 线条样式 marker: 标记风格 markerfacecolor: ...

  3. 浅谈python中的闭包函数

    闭包函数初探 通常我们定义函数都是这样定义的 def foo(): pass 其实在函数式编程中,函数里面还可以嵌套函数,如下面这样 def foo(): print("hello worl ...

  4. matplotlib绘制柱状图

    参考自Matplotlib Python 画图教程 (莫烦Python)(11)_演讲•公开课_科技_bilibili_哔哩哔哩 https://www.bilibili.com/video/av16 ...

  5. Python——使用matplotlib绘制柱状图

    Python——使用matplotlib绘制柱状图 1.基本柱状图           首先要安装matplotlib(http://matplotlib.org/api/pyplot_api.htm ...

  6. matplotlib bar函数重新封装

    参考: https://blog.csdn.net/jenyzhang/article/details/52047557 https://blog.csdn.net/liangzuojiayi/art ...

  7. matplotlib中使用imshow绘制二维图

    #coding:utf-8 from matplotlib import mpl import matplotlib.pyplot as plt#载入matplotlib快速绘图的函数库 import ...

  8. Matplotlib 中常见的图形

    # 导包 from matplotlib import pyplot as plt import numpy as np 线性图 简单线性图 在图表的所有类型中,线性图最为简单.线性图的各个数据点由一 ...

  9. Python使用Plotly绘图工具,绘制柱状图

    使用Plotly绘制基本的柱状图,需要用到的函数是graph_objs 中 Bar函数 通过参数,可以设置柱状图的样式. 通过barmod进行设置可以绘制出不同类型的柱状图出来. 我们先来实现一个简单 ...

随机推荐

  1. 华为开发者大会主题演讲:3D建模服务让内容高效生产

    内容来源:华为开发者大会2021 HMS Core 6 Graphics技术论坛,主题演讲<3D建模服务使能3D内容高效生产>. 演讲嘉宾:华为消费者云服务 AI算法专家 3D建模服务(3 ...

  2. [Vue]浅谈Vue3组合式API带来的好处以及选项API的坏处

    前言 如果是经验不够多的同志在学习Vue的时候,在最开始会接触到Vue传统的方式(选项式API),后边会接触到Vue3的新方式 -- 组合式API.相信会有不少同志会陷入迷茫,因为我第一次听到新的名词 ...

  3. 【linux系统】命令学习(五)linux三剑客 grep \ awk \ sed

    grep----基于正则表达式查找满足条件的行 1.内容检索 获取行 grep pattern file 获取内容 grep -o pattern file 获取上下文grep -A -B -C pa ...

  4. Java 处理表格,真的很爽!

    一个简单又快速的表格处理库 大家好,我是鱼皮. 处理 Excel 表格是开发中经常遇到的需求,比如表格合并.筛选表格中的某些行列.修改单元格数据等. 今天给大家分享一个 Java 处理表格的工具库,不 ...

  5. [luogu5180]支配树

    对于有向图$G$和起点$s$,有以下定义和性质-- 为了方便,不妨假设$s$能到达$G$中所有点,并任意建立一棵以$s$为根的dfs树,以下节点比较默认均按照两点在这棵dfs树上的dfs序 支配点:$ ...

  6. [bzoj3524]Couries

    首先用到bzoj2456的做法,因为要求这个数出现次数超过了一半,如果其与不同的数两两相消的话最终一定会剩下自身(如果不保证存在可能会剩下别的,但保证存在了只会剩下自身),然后再用可持久化线段树维护即 ...

  7. Aggregated APIServer 构建云原生应用最佳实践

    作者 张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验.目前主要负责腾讯云 TKE 云原生 AI 产品的开发工作. 谢远东,腾讯高级工程师,Kubeflow Member.Fluid(CNC ...

  8. Java设计模式之(六)——桥接模式

    1.什么是桥接模式? Decouple an abstraction from its implementation so that the two can vary independently. 桥 ...

  9. GeoServer style 配置样例

    <?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version=& ...

  10. 【vue.js】vue项目使用Iconfont(阿里图标库)

    vue项目使用Iconfont(阿里图标库) 2019-11-12  19:07:02  by冲冲 1.操作步骤 ① 登录阿里巴巴矢量图标库 https://www.iconfont.cn ,注册账号 ...