Matplotlib实现各种条形图绘制

目录
  • 1. 条形图的绘制
  • 2. 横向条形图
  • 3. 分组条形图
  • 4. 堆叠条形图
  • 5. 条形图应用场景

1. 条形图的绘制

plt.bar 方法有以下常用参数:

  • x :一个数组或者列表,代表需要绘制的条形图的x轴的坐标点。
  • height :一个数组或者列表,代表需要绘制的条形图y轴的坐标点。
  • width :每一个条形图的宽度,默认是0.8的宽度。
  • bottom : y 轴的基线,默认是0,也就是距离底部为0.
  • align :对齐方式,默认是 center ,也就是跟指定的 x 坐标居中对齐,还有为 edge ,靠
  • 边对齐,具体靠右边还是靠左边,看 width 的正负。
  • color :条形图的颜色。

返回值为 BarContainer ,是一个存储了条形图的容器,而条形图实际上的类型
是 matplotlib.patches.Rectangle 对象。
更多参考

比如现在有 2019 年贺岁片票房的数据(数据来源

#票房单位亿元
movies = {
 "流浪地球":40.78,
 "飞驰人生":15.77,
 "疯狂的外星人":20.83,
 "新喜剧之王":6.10,
 "廉政风云":1.10,
 "神探蒲松龄":1.49,
 "小猪佩奇过大年":1.22,
 "熊出没·原始时代":6.71
}

用条形图绘制每部电影及其票房的代码如下:

movies = {
    "流浪地球":40.78,
    "飞驰人生":15.77,
    "疯狂的外星人":20.83,
    "新喜剧之王":6.10,
    "廉政风云":1.10,
    "神探蒲松龄":1.49,
    "小猪佩奇过大年":1.22,
    "熊出没·原始时代":6.71
}
x = list(movies.keys())
y = list(movies.values())
plt.figure(figsize=(15,5))
# plt.bar(x,y,width=-0.3,align="edge",color='r',edgecolor='k')
movie_df = pd.DataFrame(data={"names":list(movies.keys()),"tickets":list(movies.values())})
plt.bar("names","tickets",data=movie_df)
plt.xticks(fontproperties=font,size=12)
plt.yticks(range(0,45,5),["%d亿"%x for x in range(0,45,5)],fontproperties=font,size=12)
plt.grid()

其中 xticks yticks 的用法跟之前的折线图一样。这里新出现的方法是 bar , bar 常用的有3个参数,分别是 x (x轴的坐标点), y (y轴的坐标点)以及 width (条形的宽度)。

2. 横向条形图

横向条形图需要使用plt.barh 这个方法跟 bar 非常的类似,只不过把方向进行旋转。参数
跟 bar 类似,但也有区别。

如下:

  • y :数组或列表,代表需要绘制的条形图在 y 轴上的坐标点。
  • width :数组或列表,代表需要绘制的条形图在 x 轴上的值(也就是长度)。
  • height :条形图的高度,默认是0.8。
  • left :条形图的基线,也就是距离y轴的距离。

其他参数跟 bar 一样。
返回值也是 BarContainer 容器对象。

还是以以上数据为例,将电影名和票房反转一下。

示例代码如下:

plt.barh(list(movies.keys()),list(movies.values()))
plt.yticks(fontproperties=font,size=12)

3. 分组条形图

现在有一组数据,是2019年春节贺岁片前五天的电影票房记录。

示例代码如下:

movies = {
    "流浪地球":[2.01,4.59,7.99,11.83,16],
    "飞驰人生":[3.19,5.08,6.73,8.10,9.35],
    "疯狂的外星人":[4.07,6.92,9.30,11.29,13.03],
    "新喜剧之王":[2.72,3.79,4.45,4.83,5.11],
    "廉政风云":[0.56,0.74,0.83,0.88,0.92],
    "神探蒲松龄":[0.66,0.95,1.10,1.17,1.23],
    "小猪佩奇过大年":[0.58,0.81,0.94,1.01,1.07],
    "熊出没·原始时代":[1.13,1.96,2.73,3.42,4.05]
}

plt.figure(figsize=(20,8))
width = 0.75
bin_width = width/5
movie_pd = pd.DataFrame(movies)
ind = np.arange(0,len(movies))
# 第一种方案
# first_day = movie_pd.iloc[0]
# plt.bar(ind-bin_width*2,first_day,width=bin_width,label='第一天')
# second_day = movie_pd.iloc[1]
# plt.bar(ind-bin_width,second_day,width=bin_width,label='第二天')
# third_day = movie_pd.iloc[2]
# plt.bar(ind,third_day,width=bin_width,label='第三天')
# four_day = movie_pd.iloc[3]
# plt.bar(ind+bin_width,four_day,width=bin_width,label='第四天')
# five_day = movie_pd.iloc[4]
# plt.bar(ind+bin_width*2,five_day,width=bin_width,label='第五天')

# 第二种方案
for index in movie_pd.index:
    day_tickets = movie_pd.iloc[index]
    xs = ind-(bin_width*(2-index))
    plt.bar(xs,day_tickets,width=bin_width,label="第%d天"%(index+1))
    for ticket,x in zip(day_tickets,xs):
        plt.annotate(ticket,xy=(x,ticket),xytext=(x-0.1,ticket+0.1))
# 设置图例
plt.legend(prop=font)
plt.ylabel("单位:亿",fontproperties=font)
plt.title("春节前5天电影票房记录",fontproperties=font)
# 设置x轴的坐标
plt.xticks(ind,movie_pd.columns,fontproperties=font)
plt.xlim
plt.grid(True)
plt.show()

4. 堆叠条形图

堆叠条形图,是将一组相关的条形图堆叠在一起进行比较的条形图。

比如以下案例:

menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
groupNames = ('G1','G2','G3','G4','G5')
plt.bar(groupNames,menMeans,label="男性得分")
plt.bar(groupNames,womenMeans,bottom=menMeans,label='女性得分')
plt.legend(prop=font)

在绘制女性得分的条形图的时候,因为要堆叠在男性得分的条形图上,所以使用到了一
bottom 参数,就是距离 x 轴的距离。通过对贴条形图,我们就可以清楚的知道,哪一个队伍的综合排名是最高的,并且在每个队伍中男女的得分情况。

5. 条形图应用场景

  • 数量统计。
  • 频率统计。
  • 适用于分类数据对比。
  • 垂直条形图最多不超过12个分类(也就是12个柱形),横向条形图最多不超过30个分类。如果垂直条形图的分类名太长,那么建议换成横向条形图。
  • 柱状图不适合表示趋势,如果想要表示趋势,应该使用折线图。

到此这篇关于Matplotlib实现各种条形图绘制的文章就介绍到这了,更多相关Matplotlib条形图绘制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python3使用matplotlib绘制条形图

    本文实例为大家分享了python3使用matplotlib绘制条形图的具体代码,供大家参考,具体内容如下 绘制竖状条形图 代码 from matplotlib import pyplot as plt from matplotlib import font_manager my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/arphic/ukai.ttc") a = ["战狼2"

  • Matplotlib绘制条形图的方法你知道吗

    目录 一.一般条形图 示例: 二.横向条形图 示例: 三.分组条形图的绘制 四.堆叠条形图绘制 示例: 总结 import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib import font_manager 一.一般条形图 一般条形图使用 pyplot.bar()函数绘制,其形式及参数如下: matplotlib.pyplot.bar(x, height, width=0.8, b

  • python+matplotlib绘制3D条形图实例代码

    本文分享的实例主要实现的是Python+matplotlib绘制一个有阴影和没有阴影的3D条形图,具体如下. 首先看看演示效果: 完整代码如下: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # setup the figure and axes fig = plt.figure(figsize=(8, 3)) ax1 = fig.add_subplot(121

  • python matplotlib库绘制条形图练习题

    练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机

  • Python Matplotlib绘制条形图的全过程

    目录 条形图 单组条形图 水平条形图 多组条形图 堆积条形图 对称条形图 总结 条形图 条形图具有丰富的表现形式,常见的类型包括单组条形图,多组条形图,堆积条形图和对称条形图等. 单组条形图 条形图的每种表现形式都可以绘制成垂直条形图或水平条形图,以单组条形图的两种绘制方式为例. 垂直条形图 import matplotlib.pyplot as plt data = [10., 20., 5., 15.] plt.bar(range(len(data)), data) plt.show() T

  • Matplotlib实现各种条形图绘制

    目录 1. 条形图的绘制 2. 横向条形图 3. 分组条形图 4. 堆叠条形图 5. 条形图应用场景 1. 条形图的绘制 plt.bar 方法有以下常用参数: x :一个数组或者列表,代表需要绘制的条形图的x轴的坐标点. height :一个数组或者列表,代表需要绘制的条形图y轴的坐标点. width :每一个条形图的宽度,默认是0.8的宽度. bottom : y 轴的基线,默认是0,也就是距离底部为0. align :对齐方式,默认是 center ,也就是跟指定的 x 坐标居中对齐,还有为

  • python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】

    本文实例讲述了python matplotlib模块基本图形绘制方法.分享给大家供大家参考,具体如下: matplotlib模块是python中一个强大的绘图模块 安装 pip  install matplotlib 首先我们来画一个简单的图来感受它的神奇 import numpy as np import matplotlib.pyplot as plt import matplotlib zhfont1=matplotlib.font_manager.FontProperties(fname

  • Matplotlib可视化之自定义颜色绘制精美统计图

    自定义颜色 在生活中,我们可能对色彩的搭配与审美有自己的偏好,因此,我们可能希望matplotlib遵循自定义的颜色方案,以便所绘制的图形更好地适合文档或网页. matplotlib中有多种定义颜色的方法,常见的方法包括: 1.三元组(Triplets):颜色可以描述为一个实数三元组,即颜色的红.蓝.绿分量,其中每个分量在[0,1]区间内.因此,(1.0, 0.0, 0.0)表示纯红色,而(1.0, 0.0, 1.0)则表示粉色. 2.四元组(Quadruplets):它们前三个元素与三元组定义

  • Python实现动态条形图绘制的示例代码

    目录 动态条形图变动态柱状图 指定排序方式 限制条目数 设置固定条目 固定数值轴,使其不发生动态变化 设置图像帧数,默认 10 帧 设置帧率,单位时间默认为 500ms 设置每帧增加的标签时间,默认为 False 图形样式设置 条形图属性,可以设置透明度,边框等 添加动态文本 添加垂直条 设置柱状图颜色 两年前在 B 站上看到了一个宝藏 up 主,名叫 "Jannchie见齐",专门做动态条形图样式的数据可视化. 做出的效果还是很不错的,但工具使用的是 JS,不是 Python.于是尝

  • matplotlib 双y轴绘制及合并图例的实现代码

    Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式. Matplotlib 可以用来绘制各种静态,动态,交互式的图表. Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来. Matplotlib 可以绘制线图.散点图.等高线图.条形图.柱状图.3D 图形.甚至是图形动画等等. 下面看下matplotlib 双y轴绘制及合并图例. 1.双y轴绘制 关键函数:twinx(

  • 不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决

    前言 本文主要给大家介绍了关于不同版本中Python matplotlib.pyplot.draw()界面绘制异常的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 在 Ubuntu系统上进行如下配置: $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install python-dev $ sudo apt-get install python-pip $ sudo pip install --u

  • matplotlib在python上绘制3D散点图实例详解

    大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatterplot in 3D. ''' from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def randrange(n, vmin, vmax): ''' Helper f

  • Python matplotlib画图实例之绘制拥有彩条的图表

    生产定制一个彩条标签. 首先导入: import matplotlib.pyplot as plt import numpy as np from matplotlib import cm from numpy.random import randn 制作拥有垂直(默认)彩条的图表: fig, ax = plt.subplots() data = np.clip(randn(250, 250), -1, 1) cax = ax.imshow(data, interpolation='neares

  • matplotlib quiver箭图绘制案例

    quiver绘制表示梯度变化非常有用,下面是学习过程中给出的两个例子,可以很好理解quiver的用法 from pylab import * close() ## example 1 x = linspace(0,10,40) y = x**2*exp(-x) u = array([x[i+1]-x[i] for i in range(len(x)-1)]) v = array([y[i+1]-y[i] for i in range(len(x)-1)]) x = x[:len(u)] # 使得

  • Python利用matplotlib模块数据可视化绘制3D图

    目录 前言 1 matplotlib绘制3D图形 2 绘制3D画面图 2.1 源码 2.2 效果图 3 绘制散点图 3.1 源码 3.2 效果图 4 绘制多边形 4.1 源码 4.2 效果图 5 三个方向有等高线的3D图 5.1 源码 5.2 效果图 6 三维柱状图 6.1 源码 6.2 效果图 7 补充图 7.1 源码 7.2 效果图 总结 前言 matplotlib实际上是一套面向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条Line2D.文字Text.刻度等在内存中都有一个对象与之

随机推荐