使用matplotlib中的bar函数绘制柱状图

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

要显示的数据为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()

显示效果如下图:

原文地址:https://www.cnblogs.com/romin/p/10105409.html

时间: 2024-10-11 00:09:58

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

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

plt.plot(x, y, **kwargs) **kwargs的参数大致有如下几种: color: 颜色 linestyle: 线条样式 marker: 标记风格 markerfacecolor: 标记颜色 markersize: 标记大小 备注: color = linestyle =  (linestyle = 'none' 或 linestyle = ' '    表示没有线条) marker = 原文地址:https://www.cnblogs.com/shuaishuaidefei

绘图与可视化--pandas中的绘图函数

matplotlib是一种比较低级的工具,要组装一张图表,你得用它得各种基础组件才行:数据展示(即图表类型:线型图.柱状图.盒型图.散布图.等值线图等).图例.标题.刻度标签以及其它注释型信息. 在pandas中,有行标签.列标签及分组信息,要绘制一张图,需要很多matplotlib代码.pandas有很多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法. 1.1 线型图 Series和DataFrame都有一个用于生成各类图表的plot方法,默认情况下,生成的是线型图.

Pyhon数据分析20——matplotlib可视化(二)之柱状图

atplotlib绘制柱状图柱状图(bar chart),是一种以长方形的长度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析.柱状图亦可横向排列,或用多维方式表达. 准备import numpy as npimport pandas as pdfrom pandas import Series, DataFrame%matplotlib inlineimport matplot

matplotlib子图与多种图形绘制

import numpy as np import matplotlib.pyplot as plt  #散点图 #scatter fig=plt.figure() #fig.add_subplot(3,3,1)#上下两种方法都可以 ax=fig.add_subplot(3,3,1) n=128 #正态分布numpy.random.normal(loc=0.0, scale=1.0, size=None),(均值,标准差,size默认为none,只输出一个值)   x=np.random.nor

canvas绘制柱状图和、绘制形状中心旋转

<!DOCTYPE html> <html ng-app=""> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <canvas id="cvs" width="400" height="300"

MATLAB中的常用函数

MATLAB中的常用函数 1. 特殊变量与常数 主题词 意义 主题词 意义 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 inputname 输入参数名 NaN 非数 nargin 输入参数个数 nargout 输出参数的数目 pi 圆周率 nargoutchk 有效的输出参数数目 realmax 最大正浮点数 realmin 最小正浮点数 varargin   实际输入的参量 varargout 实际返回的参量     2.

序列模式关联规则:使用arulesSequences包中的cspade函数

数据抽象 序列(sequence):表示一个完整的信息流. 数据项(item):序列中最小组成单位的集合 事件(event):通常使用时间戳来表示,用于标识同一个序列内不同数据项之间的前后顺序关系. 在网站分析中,可以使用序列模式的关联分析来研究用户的点击行为流,并衡量页面的体验以及易用性效果. (该实例来自 李明 <R语言与网站分析>中例子) 读取数据 # (1)使用read.fwf函数读入文件 tmpp<-read.fwf("~\\anonymous-msweb.data&

pyplot.bar函数重新封装

参考: https://blog.csdn.net/jenyzhang/article/details/52047557 https://blog.csdn.net/liangzuojiayi/article/details/78187704 需求: 封装一个带分组功能的bar绘制函数 绘制效果: 代码: 1 # -*- coding: utf-8 -*- 2 import numpy as np 3 import matplotlib.pyplot as plt 4 5 class Bar(o

python 绘制柱状图

import matplotlib.pyplot as plt import numpy as np # 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英寸 plt.figure(figsize=(8, 6), dpi=80) # 再创建一个规格为 1 x 1 的子图 plt.subplot(1, 1, 1) # 柱子总数 N = 6 # 包含每个柱子对应值的序列 values = (25, 32, 34, 20, 41, 50) # 包含每个柱子下标的序列 index =