Python用 matplotlib 绘制柱状图

目录
  • 1. 柱状图概述
    • 1.1什么是柱状图
    • 1.2柱状图使用场景
    • 1.3柱状图绘制步骤
    • 1.3案例展示
  • 2. 柱状图属性
    • 2.1柱状体颜色填充
    • 2.2状描边设置
    • 2.3状体边框宽度
    • 2.4刻度标签
  • 3. 堆叠柱状图
  • 4. 并列柱状图
  • 5. 水平柱状图
  • 6. 添加折线柱状图
    • 7. 正负柱状图

复习回顾:

Python 为数据展示提供了大量优秀的功能包,其中 matplotlib 模块可以方便绘制制作折线图、柱状图、散点图等高质量的数据包。
关于 matplotlib 模块,我们前期已经对matplotlib进行基本框架、以及常用方法的学习

 matplotlib 模块基础知识:对matplotlib模块进行初步认识,对常用的方法进行学习
matplotlib 模块底层原理:matplotlib 模块包含脚本层、美工层及后端层三层细节了解
matplotlib 模块折线图绘制:总结折线图相关属性和方法

在 matplotlib 模块提供的图表中,除了折线图使用最多外,柱状图也是我们日常数据分析的图表。

接下来我们开始学习绘制柱状图相关属性和方法

1. 柱状图概述

1.1什么是柱状图

  • 柱状图又称为条形图,是一种以长方形的长度为变量数据进行统计的图表
  • 柱状图用来比较两个或以上类型
  • 柱状图只有一个以长方形的长度为变量
  • 柱状图可以横向排列或者多维方式展示

1.2柱状图使用场景

  • 柱状图适用在较小数据集的分析
  • 适用二维数据集,只比较一个维度数据差异项
  • 直观展示各个体之间数据的差异
  • 表现离散型的时间序列

1.3柱状图绘制步骤

  • 导入matplotlib.pyplot模块
  • 准备数据,可以使用numpy/pandas整理数据
  • 调用pyplot.bar()绘制柱状图

1.3案例展示

本次,我们分析过去5年内的产品年销量展示

案例所用到的数据如下:

import random

x_data = ["20{}年".format(i) for i in range(16,21)]
y_data = [random.randint(100,300) for i in range(6)]

绘制柱状图

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"]=['SimHei']
plt.rcParams["axes.unicode_minus"]=False

for i in range(len(x_data)):
    plt.bar(x_data[i],y_data[i])

plt.title("销量分析")
plt.xlabel("年份")
plt.ylabel("销量")

plt.show()

2. 柱状图属性

2.1柱状体颜色填充

  • facecolor(fc)关键字
  • color 关键字
  • 颜色简称:
属性值 说明 属性值 说明
"b"/"bule" 蓝色 "m"/"magenta" 品红
"g" /"green" 绿色 "y"/"yellow" 黄色
"r"/"red" 红色 "k"/"black" 黑色
"c"/"cyan" 青色 "w"/"white"

rgb:

  • 格式形式:(r,g,b)
  • 取值范围:0~1

2.2状描边设置

柱状体边框颜色

  • edgecolor 或者 ec

柱状体边框样式

  • linestyle 或者 ls
  • 线条样式:
属性值 说明
"-" 、"solid" 默认实线显示
"--"、"dashed" 虚线
"-." "dashdot" 点划线
":"、"dotted" 虚线
"None" """"

2.3状体边框宽度

  • linewidth 或者 lw
  • 柱状图填充样式

hatch: 设置填充样式
属性取值:{'/', '', '|', '-', '+', 'x', 'o', 'O', '.', '*'} |

2.4刻度标签

  • tickle label:默认使用数字标签

我们对 第一节柱状图添加边框样式为"--",添加指定rgb颜色,填充圆圈

for i in range(len(x_data)):
   plt.bar(x_data[i],y_data[i],color=(0.2*i,0.2*i,0.2*i),linestyle="--",hatch="o")

3. 堆叠柱状图

  • 在柱状图中,我们会在同时对比两组数据在同一类中的表现形式,因此需要绘制堆叠柱状图
  • bottom : 条形底座的y坐标,默认值为0

在第一节案例中,添加一组y轴数据所有数据如下:

x_data = ["20{}年".format(i) for i in range(16,21)]
 y_data = list(random.randint(100,300) for i in range(5))
 y2_data = list(random.randint(100,300) for i in range(5))

再添加一次pyplot.bar方法,添加bottom属性

 plt.bar(x_data,y_data,lw=0.5,fc="r",label="Phone")
 plt.bar(x_data,y2_data,lw=0.5,fc="b",label="Android",bottom=y_data)

4. 并列柱状图

在绘制并列的柱状图中,要控制好每个柱状体的位置和大小可以使用width属性

  • width: 设置每组柱状体的宽度
  • x轴:x轴的宽度每组直接也要设置好

例如继续改造上面案例,我们为bar1和bar2添加了width属性后,单独设置x轴并排的宽度为0.3

x_width = range(0,len(x_data))
x2_width = [i+0.3 for i in x_width]

plt.bar(x_width,y_data,lw=0.5,fc="r",width=0.3,label="Phone")
plt.bar(x2_width,y2_data,lw=0.5,fc="b",width=0.3,label="Android")

plt.xticks(range(0,5),x_data)

5. 水平柱状图

柱状图中,有时候需要让柱状图水平放置,比较差异,我们这时候需要使用到barh方法

  • pyplot.barh(y,width):绘制水平柱状图
  • 结合上述案例,改用barh方法
x_data = ["20{}年".format(i) for i in range(16,21)]
  y_data = list(random.randint(100,300) for i in range(5))
  y2_data = list(random.randint(100,300) for i in range(5))

  x_width = range(0,len(x_data))
  x2_width = [i+0.3 for i in x_width]

  plt.barh(x_width,y_data,lw=0.5,fc="r",height=0.3,label="Phone")
  plt.barh(x2_width,y2_data,lw=0.5,fc="b",height=0.3,label="Android")
  plt.yticks(range(0,5),x_data)

  plt.legend()

  plt.title("销量分析")
  plt.ylabel("年份")
  plt.xlabel("销量")

  plt.show()

6. 添加折线柱状图

我们在查看柱状图时,有时候会需要辅助折线来查看

  • 使用pyplot.plot()方法汇总折线图
  • 同时使用pyplot.text()显示坐标值
  • 当堆叠图时,需要计算好折线相对位置
plt.plot(x_data,y_data,color="pink",linestyle="--")

plt.plot(x_data, y2_data+200, color="skyblue", linestyle="-.")

# 柱状图
plt.bar(x_data,y_data,lw=0.5,fc="r",width=0.3,label="Phone",alpha=0.5)
plt.bar(x_data,y2_data, lw=0.5, fc="b", width=0.3, label="Android",alpha=0.5,bottom=y_data)

for i,j in zip(x_data,y_data):

   plt.text(i,j+0.05,"%d"%j,ha="center",va="bottom")

for i2,j2 in zip(x_data,y2_data):

   plt.text(i2,j2+180,"%d"%j2,ha="center",va="bottom")

7. 正负柱状图

我们需要使用Axes对象来设置坐标轴的位置

  • 首先使用pyplot.gca()方法创建axes对象
  • 然后使用matplotlib.spines模块调用set_position设置坐标轴位置
  • set_position 设置轴位置点
  • spines[]选项有"left"|"bottom"|"width"|"height"
  • set_position 值格式为(位置类型,数量);位置类型;"outward"|"axes"|"data"|;数量:中心->("轴",0.5),零->("数据",0.0)
y_data = np.random.randint(100, 300,5)
y2_data = np.random.randint(100, 300,5)

ax = plt.gca()
ax.spines["bottom"].set_position(('data', 0))

plt.bar(x_data,+y_data,lw=0.5,fc="r",width=0.3,label="Phone")
plt.bar(x_data,-y2_data, lw=0.5, fc="b", width=0.3, label="Android")

for i,j in zip(x_data,y_data):

    plt.text(i,j,"%d"%j,ha="center",va="top")

for i2,j2 in zip(x_data,y2_data):

    plt.text(i2,-j2,"%d"%j2,ha="center",va="bottom")

总结:
本文我们atplotlib模块中详细学习绘制各种柱状图标相关属性和方法,在遇到需要直观展示离散数据点的差异时,我们可以使用bar()或者barh()绘制美观的图表。

到此这篇关于Python用 matplotlib 绘制柱状图的文章就介绍到这了,更多相关matplotlib 绘制柱状图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 用matplotlib绘制折线图详情

    目录 1. 折线图概述 1.1什么是折线图? 1.2折线图使用场景 1.3绘制折线图步骤 1.4案例展示 2. 折线2D属性 2.1linestyle:折线样式 2.2color:折线颜色 2.3marker:坐标值标记 2.4fillstyle:标记填充方法 2.5linewidth(lw): 直线宽度 3. 坐标管理 3.1坐标轴名字设置 3.2坐标轴刻度设置 3.3坐标轴位置设置 3.4指定坐标值标注 4. 多条折线展示图 5. 图列管理 复习回顾: 众所周知,matplotlib 是一款

  • python调用matplotlib模块绘制柱状图

    我们可以调用matplotlib 绘制我们的柱状图,柱状图可以是水平的也可以是竖直的. 在这里我先记录下竖直的柱状图怎么绘制 在这里一般用到的函数就是bar # bar(left, height, width=0.8, bottom=None, hold=None, **kwargs) # 绘制柱形图 # left:柱形图的x坐标 # height柱形图的高度,以0.0为基准 # width:柱形图的宽度,默认0.8 # facecolor:颜色 # edgecolor:边框颜色n # bott

  • Python matplotlib底层原理解析

    目录 1. matplotlib 框架组成 2. 脚本层(scripting) 3. 美工层(artist) 4. 后端层(backend) 复习回顾: 前期,我们已经学习了matplotlib模块相关的基础知识,对 matplotlib 模块折线图.饼图.柱状图进行操作. 我们都知道matplotlib 是偏向底层用于可视化数据处理的库,我们在绘制图表的时候主要步骤主要有四大步骤: 导入 matplotlib.pplot库 使用pandas/numpy模块对数据进行整分析理 调用pyplot中

  • python使用matplotlib绘制柱状图教程

    Matplotlib的概念这里就不多介绍了,关于绘图库Matplotlib的安装方法:点击这里 小编之前也和大家分享过python使用matplotlib实现的折线图和制饼图效果,感兴趣的朋友们也可以点击查看,下面来看看python使用matplotlib绘制柱状图的方法吧,具体如下: 1. 基本的柱状图 import matplotlib.pyplot as plt data = [5, 20, 15, 25, 10] plt.bar(range(len(data)), data) plt.s

  • Python Matplotlib 实现3D绘图详解

    目录 第一个三维绘图程序 3D散点图 3D等高线图 3D线框图 3D曲面图 最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为实用的 3D 绘图程序包,比如 mpl_toolkits.mplot3d,通过调用该程序包一些接口可以绘制 3D散点图.3D曲面图.3D线框图等 mpl_toolkits 是 Matplotlib 的绘图工具包. 第一个三维绘图程序 下面编写第一个三维绘图程序. 首先创建一个三维绘

  • Python 可视化matplotlib模块基础知识

    目录 1. matplotlib 模块概述 2. matplotlib.pyplot 相关方法 3. matplotlib.pyplot 图表展示 前言: 互联网时代下,在网络中每天都会产生很多数据,通过对数据分析之后,如何更好的诠释数据背后的意义,我们需要对数据进行可视化展示. 在数据可视化中,Python 也支持第三模块 matplotlib 模块:Python使用最多的可视化库 seaborn 模块:基于matplotlib的图形可视化 pycharts 模块:用于生成Echarts 图表

  • Python用 matplotlib 绘制柱状图

    目录 1. 柱状图概述 1.1什么是柱状图 1.2柱状图使用场景 1.3柱状图绘制步骤 1.3案例展示 2. 柱状图属性 2.1柱状体颜色填充 2.2状描边设置 2.3状体边框宽度 2.4刻度标签 3. 堆叠柱状图 4. 并列柱状图 5. 水平柱状图 6. 添加折线柱状图 7. 正负柱状图 复习回顾: Python 为数据展示提供了大量优秀的功能包,其中 matplotlib 模块可以方便绘制制作折线图.柱状图.散点图等高质量的数据包. 关于 matplotlib 模块,我们前期已经对matpl

  • python通过Matplotlib绘制常见的几种图形(推荐)

    目录 python通过Matplotlib绘制常见的几种图形 一.使用matplotlib对几种常见的图形进行绘制 1.柱状图 2.水平绘制柱状图 3.多个柱状图 4.叠加型柱状图 5.散点图 6.气泡图 7.直方图 8.箱线图 二.添加文字描述 1.文字描述一 2.文字描述二 三.多个图形描绘 subplots 四.使用Pandas 绘图 1.散点图 2.绘制柱状图 3.堆积的柱状图 4.水平的柱状图 5.直方图 6.箱线图 python通过Matplotlib绘制常见的几种图形 一.使用ma

  • Python利用 matplotlib 绘制直方图

    目录 1. 直方图概述 1.1什么是直方图? 1.2直方图使用场景 1.3直方图绘制步骤 1.4案例展示 2. 直方图属性 2.1设置颜色 2.2设置长条形数目 2.3设置透明度 2.4设置样式 3. 添加折线直方图 4. 堆叠直方图 5. 不等距直方图 6. 多类直方图 复习回顾: 经过前面对 matplotlib 模块从底层架构.基本绘制步骤等学习,我们已经学习了折线图.柱状图的绘制方法. matplotlib 模块基础:对matplotlib 模块常用方法进行学习 matplotlib 模

  • Python利用Matplotlib绘制图表详解

    目录 前言 折线图绘制与显示 绘制数学函数图像 散点图绘制 绘制柱状图 绘制直方图 饼图 前言 Matplotlib 是 Python 中类似 MATLAB 的绘图工具,如果您熟悉 MATLAB,那么可以很快的熟悉它. Matplotlib 提供了一套面向对象绘图的 API,它可以轻松地配合 Python GUI 工具包(比如 PyQt,WxPython.Tkinter)在应用程序中嵌入图形.与此同时,它也支持以脚本的形式在 Python.IPython Shell.Jupyter Notebo

  • Python使用matplotlib给柱状图添加数据标签bar_label()

    目录 0.更新matplotlib库 1.导入库 2.数据准备 3.绘制柱状图 4.绘图结果 5.完整代码 6.bar_label()相关参数的补充说明 0.更新matplotlib库 本文后续的实验过程都是基于matplotlib版本大于等于3.4.1,如果版本较低,是无法实行后续操作的,如何在Pycharm中直接更新matplotlib库的版本,请参照方法:以tensorflow库为例用Pycharm更新第三方库 1.导入库 直接导入matplotlib.pyplot库,代码为: impor

  • python使用Matplotlib绘制多种常见图形

    目录 柱状图 水平绘制柱状图 多个柱状图 叠加型柱状图 散点图 气泡图 直方图 箱线图 添加文字描述 添加文字描述 方法二 多个图形描绘 subplots 使用Pandas 绘图 Matplotlib官网如果想了解更多可查看官网. import numpy as np import matplotlib.pyplot as plt %matplotlib inline #写了这个就可以不用写plt.show() plt.rcParams['font.sans-serif']=['SimHei']

  • Python使用matplotlib绘制动画的方法

    本文实例讲述了Python使用matplotlib绘制动画的方法.分享给大家供大家参考.具体分析如下: matplotlib从1.1.0版本以后就开始支持绘制动画 下面是几个的示例: 第一个例子使用generator,每隔两秒,就运行函数data_gen: # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig =

  • Python基于matplotlib绘制栈式直方图的方法示例

    本文实例讲述了Python基于matplotlib绘制栈式直方图的方法.分享给大家供大家参考,具体如下: 平时我们只对一组数据做直方图统计,这样我们只要直接画直方图就可以了. 但有时候我们同时画多组数据的直方图(比如说我大一到大四跑大学城内环的用时的分布),大一到大四用不同颜色的直方图,显示在一张图上,这样会很直观. #!/usr/bin/env python # -*- coding: utf-8 -*- #http://www.jb51.net/article/100363.htm # nu

随机推荐