matplotlib堆积柱状图画法介绍

堆积柱状图可以理解是两个柱状图显示在一个图形中,关键属性就在于bottom这个属性。

# -*- coding:utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('planets.csv')
print(df.head(10))
df.fillna(value={'mass':df.mass.mean()},inplace=True)
temp = pd.pivot_table(data=df,index='method',columns='number',values='mass',aggfunc=np.sum)
print(temp)
temp.fillna(0,inplace=True)
print(temp.columns.values)#获取dataframe 的x方向的属性值
print(temp.loc['Radial Velocity',:])
plt.rcParams['font.sans-serif']=['SimHei']#这两句作用为防止中文乱码
plt.rcParams['axes.unicode_minus']=False
plt.bar(x = temp.columns.values,height=temp.loc['Radial Velocity',:],color='steelblue',label='Astrometry', \tick_label=['数量1','数量2','数量3','数量4','数量5','数量6','数量7'])
plt.bar(x=temp.columns.values,height=temp.loc['Transit',:],color='red',label='Transit', \tick_label=['数量1','数量2','数量3','数量4','数量5','数量6','数量7'],bottom=list(temp.loc['Radial Velocity',:]))
plt.legend(loc='best')
plt.show()

直接看结果图:

关于柱状图如何画,我在这里就不赘述了,想了解的同学可以去看我之前写的对于画柱状图的介绍 matplotlib画图教程系列之-条形图

这里只说一下bottom这个属性,这个属性的意思是以什么数值为起点进行向上画图。

咱们看 第二个bar方法 ,bottom=list(temp.loc[‘Radial Velocity’,:])
这个bottom的值正是第一个bar方法中的,height=temp.loc[‘Radial Velocity’,:],的值。当然,这两个bar方法要保证使用同一个x坐标轴,也就是x属性的值要相同。

补充细节

上面说的太粗糙了,下面补充一些干货

首先我们先查看一下csv文件的数据形式:

然后我们再看一下导入到程序中数据的显示形式:

从两张图的对比,我们可以看到,原来csv文件中第一行列名,再导入程序中,自动被识别为了数据列名,行名默认数字0开始递增。

然后介绍下面这个方法:

pandas.pivot_table() 这个方法叫做透视表。

用过excel做过表格数据的肯定都知道这个东西,就算不知道也没事,下面详细介绍。

pandas.pivot_table(index,columns,values)

此方法中有三个参数:

  • index 选择属性作为行
  • columns 选择属性作为列
  • values 选择所要查看的结果值

另外说一下aggfunc这个参数,是对数据进行操作。

以下图表为例,假设同时具有属性’foo’=one和’bar’=A的数据有两条:

0 one A 1 x

1 one A 2 y

那么我们按照下图进行透视表操作结果是,只显示第一条数据。

如果我们添加aggfunc=np.sum方法,会将这两条数据求和显示。

看下面这个图:

图中我们能够看到,‘foo’、‘bar’、‘baz’ 均是左边数据表格中的列名。

index=‘foo’ 表示将’foo’这一列所有可取值作为行名

columns=‘bar’ 表示将’bar’这一列所有可取值作为右边的列名

values=‘baz’ 表示将’baz’这一列的值作为最终显示结果。

其实说白了就是 我们将’foo’和’bar’ 对应值作为条件,将’baz’作为值,填入到相应的位置。

好了,那么接下来回到我们自己的数据集上,我们对其进行透视表操作

分别获取不同行的数据:

temp.loc[‘Radial Velocity’,:]

temp.loc[‘Transit’,:]

然后我们将这两组数据作为柱状图的height值。

matplotlib画图教程系列之-堆积柱状图相关推荐

  1. Matplotlib画图教程:在QT界面中嵌入三维图片

    Matplotlib画图教程:在QT界面中嵌入三维图片 需求: 做项目报告的时候,有这么一个想法,就是能通过UI随时调用matplotlib进行二维图和三维图的绘制.因此就诞生了做这么一个小模块的想法 ...

  2. matplotlib画图教程,设置坐标轴标签和间距

    大家好,欢迎来到周四数据处理专题,我们今天继续matplotlib作图教程. 在上周的文章当中我们介绍了如何通过xlabel和ylabel设置坐标轴的名称,以及这两个函数的花式设置方法,可以设置出各种 ...

  3. html画图代码_python之matplotlib画图教程(2)

    各位小表贝,你们的画图小老弟又来咯~ 上一次我们聊到了如何画离散图,这一次我们来点复杂的,准备好了么,系好安全带,准备发车咯~滴滴~ 我们先来点比较简单,那种易于上手的. 如果现在我知道了两个点的坐标 ...

  4. html画图代码_python之matplotlib画图教程(1)

    最近迷上了用matplotlib去绘制数据,如果你也需要经常与数据,图表打交道,那可以说是肥肠推荐使用了. 一段时间之前,微软在其官方发起了一个小的投票,咨询广大网友是否可以考虑用python代替VB ...

  5. Python:(使用matplotlib画图)使用bar画柱状图,并标注数字

    如图所示 代码如下 import matplotlib.pyplot as plt import numpy as npn = 12 X = np.arange(n) Y1 = (1 - X/floa ...

  6. python如何画动图_python之matplotlib画图教程(3)--如何画动图

    上一篇我们说好了,要给出整套源码,为了不占正文的篇幅,我会在文末贴出.放心,不是让你去关注公众号.因为,我并没有.. 之前我们聊了怎么画圆以及直线,我还是建议你能抽出10分钟把前面的文章先看了,因为这 ...

  7. Python可视化:matplotlib 绘制堆积柱状图绘制

    引言 在查找资料时看到了堆积柱状图,简单明了,而且绘制起来也不是很难,再结合自己的教程推文中也确实没有此类图表,即决定通过构建虚拟数据进行matplotlib堆积柱状图的绘制推文,详细内容如下: PS ...

  8. matplotlib画图(完全版)

    matplotlib 绘图_飞龙在天max的博客-CSDN博客_matplotlib画图 matplotlib画图_weixin_47570444的博客-CSDN博客_matplotlib绘图 Mat ...

  9. matplotlib柱状图上方显示数据_可视化技能之Matplotlib(上)|可视化系列01

         作者:蜇虫适航      来源:蜇虫适航 Matplotlib可以说是Python最声名远扬的可视化库了,也是Python数据分析库的"三驾马车"之一.Matplotli ...

  10. 【莫烦Python】Matplotlib Python画图教程

    目录 前言 1.基本使用 1.1 基本用法 1.2 figure图像 1.3 设置坐标轴1 1.4 设置坐标轴2 1.5 Legend图例 1.6 Annotation标注 1.7 tick能见度 2 ...

最新文章

  1. tensorflow中打印一个tensor值
  2. php虚拟主机和服务器吗,php虚拟主机和服务器吗
  3. JAVA NIO知识点总结(2)——直接缓冲区和非直接缓冲区
  4. .NET中的内存管理
  5. kuayu react_React+Spring实现跨域问题的完美解决方法
  6. python os 常用方法
  7. “飞跃四十载 同发展·共繁荣”巡回展在江苏举行
  8. Python利用情感词典做情感分析
  9. 需求分析和系统分析的区别
  10. 关于电脑是否需要安装杀毒软件的解答
  11. android格式化外置u盘,Android5.x+ 格式化外部存储(u盘, sdcard)的方法
  12. matlab-线性代数 det 各阶主子式、余子式、代数余子式
  13. k8s创建service
  14. 医疗空气净化器系统软件总体设计
  15. sdlc 瀑布式 生命周期_管理信息系统中的系统开发生命周期(SDLC)
  16. 【比赛总结】从编程位队长的角度看待第十三届华中杯数学建模比赛A题
  17. 英文学习20180206
  18. flex布局交叉轴方向对齐方式详解
  19. C语言将华氏温度转为摄氏度
  20. 接口测试系列之--前端交互测试和后端逻辑测试

热门文章

  1. 堆叠柱状图显示具体数据和百分比
  2. 360视频:分段球面投影SSP
  3. python实验四_20191318实验四 《Python程序设计》实验报告
  4. 寄存器的七种寻址方式
  5. pdf文档转word/excel/ppt/图片,pdf加解密,pdf添加水印,pdf拆分合并
  6. 已下载好的OpenCV4.5.5 CMake .cache文件夹
  7. psd导出jpg太大_保存技巧,完美解决PS导出文件过大的问题
  8. 马斯克的“星链”会不会威胁中国太空安全?肯定会!
  9. mysql命令行备份数据库
  10. Knowledge Distillation