使用matplotlib绘制并排柱状图的实战案例

目录
  • 一、概念说明
  • 二、数据展示
  • 三、图像绘制
  • 总结

一、概念说明

柱状图(bar chart),从相同的横坐标出发,以不同的数值大小来设定柱子的高度,进而表示无序或有序的定性数据间某个定量指标的大小关系。

示意图如下:

(1) 在无序的横坐标情景下,我们常常根据数值大小降序排布。

(2) 柱状图在纵坐标上可以有正有负,但必须以基准的0线开始绘制,否则会传递错误的视觉信息。

(3) 当类别间数值差异较大/类别较多/类别命名文本较长时,我们可以考虑将柱形图逆转90°,即使用条形图。

(4)如果手中的数据是二维定性的情况,可以根据需求分别选择堆叠柱状图或者并排柱状图。

①堆叠柱状图:

--- 关注类0-4的大类总量的对比

--- 同时关注小类a/b占大类的比重

② 并排柱状图(案例对象)

--- 更关注小类系列1-3在不同大类1-4间的对比

--- 关注小类在大类间数值分布的差异

--- 如果要呈现大类总量信息,可以增加折线图

二、数据展示

在本案例中, 我们是希望使用python编码,利用其中matplotlib包绘制并排柱状图,因此我们需要二维定序数据。

根据我专栏其它的案例呢,还是继续使用随机选的八座城市,目的是希望了解八座城市小初高学校数量对比(柱状),以及人口数情况(折线)。

秉持城市统计公报中有就记录,无就百度的原则,得到以下仅供绘图的数据。

上述excel表格的数据分别存放,利用下述代码我们将其导入

import pandas as pd
school_num = pd.DataFrame(pd.read_excel('./小初高学校个数.xlsx'))
people_num = pd.DataFrame(pd.read_excel('./2020人口普查数据.xlsx'))

三、图像绘制

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

# 中文和正负号设置
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

x = np.arange(8)
bar_width = 0.3
tick_label = school_num['城市']
plt.figure(figsize=(13,7))
# 柱状
plt.bar(x, school_num['小学'], bar_width, align="center", color="#2bb179", label='小学', alpha=0.5)
plt.bar(x+bar_width, school_num['初中'], bar_width, color="b", align="center", label="初中", alpha=0.5)
plt.bar(x+bar_width*2, school_num['高中'], bar_width, color="orange", align="center", label="高中", alpha=0.5)
# 折线
plt.plot(x+bar_width, people_num['人数-万'], color="#ff796c", marker='o', lw=2,label='人口普查数(万)')

text_x = [x,x+bar_width,x+bar_width*2]
text_x = [text_x[i][j]  for i in range(3) for j in range(8) ]
text_y = [school_num['小学'],school_num['初中'],school_num['高中']]
text_y = [text_y[i][j]  for i in range(3) for j in range(8) ]
plt.xticks(x+bar_width, tick_label,fontsize=18)
plt.yticks(fontsize=18)
plt.xlabel("城市",fontsize=20)
plt.ylabel("学校数量",fontsize=20)
plt.legend(fontsize=16)
plt.grid()

# 柱型加数字
for x,y,text in zip(text_x,text_y,text_y):
    plt.text(x-0.12,y+15,str(text),fontsize=12)

# plt.savefig(r'./并排柱状图示例.png')

plt.bar(横坐标位置,柱子数值)  ---  横坐标位置一般用np.arange(横坐标类别数)得到,因此在并排中,每一个小类,都要右移窗宽个单位,如果您觉得紧挨着显得很密,也可以加0.1让它们稍稍隔开。

plt.plot 的横坐标我选择x+bar_width是因为我们有三个柱子,我希望折线的原点是对应横坐标居中显示。

plt.text  ---  这一部分是给整幅图加文字,但具体加在什么位置需要自己指定。

plt.xticks(原名称,新名称)

绘制结果:

希望对您有所帮助~

总结

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

(0)

相关推荐

  • 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模块绘制柱状图

    我们可以调用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画柱状图、散点图

    本文实例为大家分享了python使用matplotlib画柱状图.散点图的具体代码,供大家参考,具体内容如下 柱状图(plt.bar) 代码与注释 import numpy as np from matplotlib import pyplot as plt plt.figure(figsize=(9,6)) n = 8 X = np.arange(n)+1 #X是1,2,3,4,5,6,7,8,柱的个数 # numpy.random.uniform(low=0.0, high=1.0, siz

  • Python数据分析Matplotlib 柱状图绘制

    前言: 柱状图是一种使用矩形柱来表示数据分布的图表,可以横向排列,也可以纵向排列,它的高度或长度和他们所代表的值成正比关系. Matplotlib 提供了bar()方法绘制柱状图, 语法格式如下: plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs) 常用参数及说明如下: x:表示x轴数据,接收list列表类型数据 height:表示柱状图的高度,接收list列表类型数据 width:

  • python如何利用matplotlib绘制并列双柱状图并标注数值

    目录 项目场景: 代码: 效果图: 扩展功能及代码: 补充:Python画图实现同一结点多个柱状图 总结 项目场景: Python项目需要画两组数据的双柱状图,以下以一周七天两位小朋友吃糖颗数为例进行演示,用matplotlib库实现 代码: import matplotlib import matplotlib.pyplot as plt import numpy as np def drawHistogram(): matplotlib.rc("font", family='Mic

  • 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

  • matplotlib bar()实现百分比堆积柱状图

    使用matplotlib创建百分比堆积柱状图的思路与堆积柱状图类似,只不过bottom参数累计的不是数值而是百分比,因此,需要事先计算每组柱子的数值总和,进而求百分比. 未使用numpy版本 适用于少量数据,数据结构需要手动构造. import matplotlib.pyplot as plt labels = ['G1', 'G2', 'G3', 'G4', 'G5'] first = [20, 34, 30, 35, 27] second = [25, 32, 34, 20, 25] thi

  • python中如何利用matplotlib画多个并列的柱状图

    首先如果柱状图中有中文,比如X轴和Y轴标签需要写中文,解决中文无法识别和乱码的情况,加下面这行代码就可以解决了: plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码 以下总共展示了三种画不同需求的柱状图: 画多组两个并列的柱状图: import matplotlib import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['S

  • 使用matplotlib绘制并排柱状图的实战案例

    目录 一.概念说明 二.数据展示 三.图像绘制 总结 一.概念说明 柱状图(bar chart),从相同的横坐标出发,以不同的数值大小来设定柱子的高度,进而表示无序或有序的定性数据间某个定量指标的大小关系. 示意图如下: (1) 在无序的横坐标情景下,我们常常根据数值大小降序排布. (2) 柱状图在纵坐标上可以有正有负,但必须以基准的0线开始绘制,否则会传递错误的视觉信息. (3) 当类别间数值差异较大/类别较多/类别命名文本较长时,我们可以考虑将柱形图逆转90°,即使用条形图. (4)如果手中

  • Python matplotlib绘制散点图配置(万能模板案例)

    目录 散点图 散点图一行代码显示 加颜色的散点图 颜色深浅表示数值大小 散点图显示颜色和大小 自定义图表散点图 散点图万能模板 其他模板 散点图 散点图是指在 回归分析中,数据点在直角坐标系平面上的 分布图,散点图表示因变量随 自变量而 变化的大致趋势,据此可以选择合适的函数 对数据点进行 拟合. 用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式.散点图将序列显示为一组点.值由点在 图表中的位置表示.类别由图表中的不同标记表示.散点图通常用于比较跨

  • Python利用matplotlib绘制圆环图(环形图)的实战案例

    目录 一.概念介绍 二.数据展示 三.图像绘制 四.参数解释 (1) wedgeprops是我们绘图时的参数字典. (2) startangle是第一个数据起画点. (3) plt.text (4) 可以绘制如示例图一样的colorbar,或者legend吗? 总结 一.概念介绍 圆环图(Donut Chart),又称为环形图,甜甜圈图.它从饼图变形而来,单环的作用上与饼图相似,用于展示定性数据中小类占大类的比例关系. Q: 那既然都有饼图了,为什么还要圆环图呢? ① 从空间利用效果上,饼图的t

  • Python3 用matplotlib绘制sigmoid函数的案例

    我就废话不多说了,大家还是直接看代码吧~ import matplotlib.pyplot as plt import numpy as np def sigmoid(x): # 直接返回sigmoid函数 return 1. / (1. + np.exp(-x)) def plot_sigmoid(): # param:起点,终点,间距 x = np.arange(-8, 8, 0.2) y = sigmoid(x) plt.plot(x, y) plt.show() if __name__

  • matplotlib绘制直方图的基本配置(万能模板案例)

    目录 直方图介绍 绘制直方图的参数(plt.hist()) 连接数据库进行直方图绘制案例 使用dataframe里面的plot函数进行绘制(万能模板) 绘制多个子图(多子图直方图案例模板) 概率分布直方图(统计图形) 直方图内显示折线图分布 堆叠面积直方图 在不同的子图中绘制各种类犯罪数据的数值分布 其他案例 乘客年龄分布频数直方图 男女乘客直方图(二维数据) 电影时长分布直方图 直方图介绍 直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据

  • matplotlib绘制折线图的基本配置(万能模板案例)

    前面我们已经构造了一种图形可视化的模板了,下面我们直接使用这个模板进行增添和修改,进一步的改善图形的外观. import matplotlib.pyplot as plt # 画布 plt.figure(figsize=(9,3), # (宽度 , 高度) 单位inch dpi=100, # 清晰度 dot-per-inch facecolor='#CCCCCC', # 画布底色 edgecolor='black',linewidth=0.2,frameon=True, # 画布边框 #fram

  • matplotlib绘制饼图的基本配置(万能模板案例)

    目录 饼图的概念 连接数据库绘制饼图案例(pandas画图) 显示百分比 饼图常见参数 扇区分离饼图 添加颜色 添加阴影 显示百分比 控制起始角度 将饼图放置在坐标轴 双饼图显示 饼图万能模板 饼图的概念 饼图英文学名为Sector Graph,又名Pie Graph.常用于统计学模块.2D饼图为圆形,手画时,常用圆规作图. 仅排列在工作表的一列或一行中的数据可以绘制到饼图中.饼图显示一个数据系列 (数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列.图表中的每个数据系列具有唯一的颜

  • matplotlib绘制雷达图的基本配置(万能模板案例)

    目录 介绍 应用场景 案例一(成绩雷达图重叠) 案例二(成绩雷达图左右图) 极坐标 介绍 雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法.轴的相对位置和角度通常是无信息的. 雷达图也称为网络图,蜘蛛图,星图,蜘蛛网图,不规则多边形,极坐标图或Kiviat图.它相当于平行坐标图,轴径向排列. 应用场景 用于成绩的透视,比如查看你是否偏科,知晓你的兴趣偏向于哪一方面 案例一(成绩雷达图重叠) # coding=utf-8 import numpy as

随机推荐