1. 柱状图:

  • 柱状图是一种用矩形柱来表示数据分类的图表。
  • 柱状图可以垂直绘制,也可以水平绘制。
  • 它的高度与其所表示的数值成正比关系。
  • 柱状图显示了不同类别之间的比较关系,图表的水平轴 X 指定被比较的类别,垂直轴 Y 则表示具体的类别值

2. 柱状图的绘制

matplotlib.pyplot.bar(x, height, width: float = 0.8, bottom = None, *, align: str = ‘center’, data = None, **kwargs)
  • x 表示x坐标,数据类型为float类型,一般为np.arange()生成的固定步长列表
  • height 表示柱状图的高度,也就是y坐标值,数据类型为float类型,一般为一个列表,包含生成柱状图的所有y值
  • width 表示柱状图的宽度,取值在0~1之间,默认值为0.8
  • bottom 柱状图的起始位置,也就是y轴的起始坐标,默认值为None
  • align 柱状图的中心位置,“center”,"lege"边缘,默认值为’center’
  • color 柱状图颜色,默认为蓝色
  • alpha 透明度,取值在0~1之间,默认值为1
  • label 标签,设置后需要调用plt.legend()生成
  • edgecolor 边框颜色 (ec)
  • linewidth 边框宽度,浮点数或类数组,默认为None (lw)
  • tick_label:柱子的刻度标签,字符串或字符串列表,默认值为None。
  • linestyle :线条样式 (ls)

2.1  基本的柱状图

import matplotlib.pyplot as plt# x轴数据
x = range(5)# y轴数据
data = [5, 20, 15, 25, 10]# 设置图形标题
plt.title("基本柱状图")# 绘制网格
plt.grid(ls="--", alpha=0.5)# bar绘制图形,x 表示x坐标  data为表示柱状图的高度
plt.bar(x, data)

  • bottom参数

柱状图的起始位置,也就是y轴的起始坐标,默认值为None

import matplotlib.pyplot as plt# x轴数据
x = range(5)# y轴数据
data = [5, 20, 15, 25, 10]# 设置图形标题:
plt.title("基本柱状图")# 绘制网格
plt.grid(ls="--", alpha=0.5)# bar绘制图形,x 表示x坐标  data为表示柱状图的高度
plt.bar(x, data, bottom=[10, 20, 5, 0, 10])# 注意data = [5, 20, 15, 25, 10] ----对应的bottom-->[10, 20, 5, 0, 10]

  • 柱状图颜色
import matplotlib.pyplot as plt# x轴数据
x = range(5)# y轴数据
data = [5, 20, 15, 25, 10]# 设置图形标题:
plt.title("设置柱状图颜色")# 绘制网格
plt.grid(ls="--", alpha=0.5)# bar绘制图形,x 表示x坐标  data为表示柱状图的高度
plt.bar(x, data ,facecolor="green")
#plt.bar(x, data ,color="green") 

import matplotlib.pyplot as plt# x轴数据
x = range(5)# y轴数据
data = [5, 20, 15, 25, 10]# 设置图形标题:
plt.title("color参数设置柱状图不同颜色")# 绘制网格
plt.grid(ls="--", alpha=0.5)# bar绘制图形,x 表示x坐标  data为表示柱状图的高度
'''
facecolor和color设置单个颜色时使用方式一样
color可以设置多个颜色值,facecolor不可以
'''
plt.bar(x, data ,color=['r', 'g', 'b'])

  • 描边 -相关的关键字参数为:

    • edgecolor 或 ec
    • linestyle 或 ls
    • linewidth 或 lw
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.title("设置边缘线条样式")plt.bar(range(len(data)), data, ec='r', ls='--', lw=2)

2.2 同位置多柱状图

同一 x 轴位置绘制多个柱状图,主要通过调整柱状图的宽度和每个柱状图x轴的 起始位置

需要绘制如下图形:

分析:

  • 本实例需要对x轴进行计算,因此需要将x轴转数值
  • 确定同一x轴中,每个柱状图x轴的起始位置。
  • 需要设置图形的宽度
  • 图形2的起始位置=图形2起始位置+图形的宽度
  • 图形3的起始位置=图形3起始位置+2倍图形的宽度
  • 需要给每个柱状图循环显示文本内容
  • 显示图例
from matplotlib import pyplot as plt
import numpy as np# 国家
countries = ['挪威', '德国', '中国', '美国', '瑞典']# 金牌个数
gold_medal = [16, 12, 9, 8, 8]
# 银牌个数
silver_medal = [8, 10, 4, 10, 5]
# 铜牌个数
bronze_medal = [13, 5, 2, 7, 5]# 1.将x轴转换为数值
x_int = np.arange(len(countries))# 2.设置图形的宽度
width = 0.2# 确定x起始位置
gold_x = x_int  # 金牌起始位置silver_x = x_int + width  # 银牌的起始位置bronze_x = x_int + 2 * width # 铜牌的起始位置# 分别绘制图形plt.bar(gold_x, gold_medal, width=width, color="gold", label="金牌")  # 金牌图形plt.bar(silver_x, silver_medal, width=width, color="silver", label="银牌") # 银牌图形plt.bar(bronze_x, bronze_medal, width=width, color="saddlebrown", label="铜牌") # 铜牌图形# 移动x标记的位置,再替换内容
plt.xticks(x_int + width,labels=countries)#-----------显示高度文本----------------
for i in range(len(countries)):# 金牌plt.text(gold_x[i],gold_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)# 银牌             plt.text(silver_x[i],silver_medal[i],gold_medal[i],va="bottom",ha="center",fontsize=8)# 铜牌plt.text(bronze_x[i],bronze_medal[i],gold_medal[i],va="bottom",ha="center",fontsize=8)  # 显示图例
plt.legend()

绘制各国的金牌榜 银牌榜和铜牌榜 总榜单

  • plt.xticks(rotation= ) 旋转 Xticks 标签文本
  • fig.autofmt_xdate(rotation= ) 旋转 Xticks 标签文本
  • ax.set_xticklabels(xlabels, rotation= ) 旋转 Xticks 标签文本
  • plt.setp(ax.get_xticklabels(), rotation=) 旋转 Xticks 标签文本
  • ax.tick_params(axis='x', labelrotation= ) 旋转 Xticks 标签文本
from matplotlib import pyplot as plt
import numpy as np# 国家
countries = ['挪威', '德国', '中国', '美国', '瑞典']# 金牌个数
gold_medal = [16, 12, 9, 8, 8]
# 银牌个数
silver_medal = [8, 10, 4, 10, 5]
# 铜牌个数
bronze_medal = [13, 5, 2, 7, 5]# 设置画布
fig = plt.figure(figsize=(6,4),dpi=150)# 一个画布分为2行3列,定位第一个
ax1 = fig.add_subplot(234)ax1.set_title("金牌榜")
# 旋转x标签
ax1.tick_params(axis="x",rotation=45)# 金牌榜
ax1.bar(countries, gold_medal, color="gold")# 一个画布分为2行3列,定位第二个
ax2 = fig.add_subplot(235)ax2.set_title("银牌榜")
# 旋转x标签
ax2.tick_params(axis="x",rotation=45)# 银牌榜
ax2.bar(countries, silver_medal, color="silver")# 一个画布分为2行3列,定位第三个
ax3 = fig.add_subplot(236)ax3.set_title("铜牌榜")
# 旋转x标签
ax3.tick_params(axis="x",rotation=45)# 铜牌榜
ax3.bar(countries, bronze_medal, color="#A0522D")# ================绘制总图:绘制2行一列,移动到第一行======
ax = fig.add_subplot(211)# 1.将x轴转换为数值
x_int = np.arange(len(countries))# 2.设置图形的宽度
width = 0.2# 确定x起始位置
gold_x = x_int  # 金牌起始位置silver_x = x_int+width  # 银牌的起始位置bronze_x = x_int + 2*width # 铜牌的起始位置# 分别绘制图形ax.bar(gold_x, gold_medal, width=width,color="gold", label="金牌")  # 金牌图形ax.bar(silver_x, silver_medal, width=width, color="silver",label="银牌") # 银牌图形ax.bar(bronze_x, bronze_medal, width=width, color="saddlebrown",label="铜牌") # 铜牌图形# 移动x标记的位置,再替换内容
ax.set_xticks(x_int + width)ax.set_xticklabels(countries)#-----------显示高度文本----------------
# 金牌 # 银牌 # 铜牌
for i in range(len(countries)):# 金牌ax.text(gold_x[i],gold_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)# 银牌ax.text(silver_x[i],silver_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)# 铜牌ax.text(bronze_x[i],bronze_medal[i], gold_medal[i],va="bottom",ha="center",fontsize=8)# 显示图例
ax.legend(fontsize=6 )# 处理标题覆盖
plt.tight_layout()

2.3 堆叠柱状图

所谓堆叠柱状图就是将不同数组别的柱状图堆叠在一起,堆叠后的柱状图高度显示了两者相加的结果值。 如图:

分析:

  • 金牌榜的起始高度为:铜牌数据+银牌数据
  • 银牌榜的起始高度为:银牌高度
  • 铜牌榜的起始高度为:0
  • 起始位置的数据相加需要使用numpy的相关知识
  • 需要确定柱状图的颜色
  • 显示图例
from matplotlib import pyplot as plt
import numpy as npcountries = ['挪威', '德国', '中国', '美国', '瑞典']
# 金牌个数
gold_medal = np.array([16, 12, 9, 8, 8])
# 银牌个数
silver_medal = np.array([8, 10, 4, 10, 5])
# 铜牌个数
bronze_medal = np.array([13, 5, 2, 7, 5])# 绘制堆叠图# 宽度
width = 0.3# 解决中文不显示问题
# 使用中文需要进行配置信息的设置 字体设置时,字体名称不区别大小写
plt.rcParams['font.sans-serif'] = ["SimHei"]# 绘制金牌
plt.bar(countries, gold_medal, color='gold', label='金牌',bottom=silver_medal + bronze_medal,width=width)# 绘制银牌
plt.bar(countries, silver_medal, color='silver', label='银牌', bottom=bronze_medal,width=width)# 绘制铜牌
plt.bar(countries, bronze_medal, color='#A0522D', label='铜牌',width=width)# 设置坐标轴
plt.ylabel('奖牌数')# 设置图例
plt.legend(loc='upper right')# 设置文本值
for i in range(len(countries)):max_y = bronze_medal[i]+silver_medal[i]+gold_medal[i]plt.text(countries[i], max_y, max_y, va="bottom", ha="center")

python数据分析学习day08:柱状图相关推荐

  1. Python数据分析学习系列 九 绘图和可视化

    Python数据分析学习系列 九 绘图和可视化 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 信息可视化 ...

  2. Python数据分析学习笔记:使用SciKit-Learn进行数据规范化

    Python数据分析学习笔记:使用SciKit-Learn进行数据规范化 数据规范化是数据挖掘的一项基础工作.不同评价指标往往具有不同的量纲,数值见的差别可能很大,不进行处理可能会影响到数据分析的结果 ...

  3. Python数据分析学习笔记:计算向量夹角

    Python数据分析学习笔记:计算向量夹角 通过计算两个向量夹角了解两个向量之间的相关性. # 计算向量夹角import numpy as npdef included_angle(a, b):a_n ...

  4. Python数据分析学习笔记:计算相关系数

    Python数据分析学习笔记:计算相关系数 1.相关系数概念 相关系数,或称线性相关系数.皮氏积矩相关系数(Pearson product-moment correlation coefficient ...

  5. Python数据分析学习笔记05:用户画像

    Python数据分析学习笔记05:用户画像 一.用户画像 用户画像是指根据用户的属性.用户偏好.生活习惯.用户行为等信息而抽象出来的标签化用户模型.通俗说就是给用户打标签,而标签是通过对用户信息分析而 ...

  6. Python数据分析学习系列 十三 Python建模库介绍

    Python数据分析学习系列 十三 Python建模库介绍 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 ...

  7. Python数据分析学习 一

    Python数据分析学习系列一 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 第1章 准备工作 1.1 ...

  8. Python数据分析学习系列 八 数据规整:聚合、合并和重塑

    Python数据分析学习系列 八 数据规整:聚合.合并和重塑 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下 ...

  9. Python数据分析学习系列 十一 时间序列

    Python数据分析学习系列 十一 时间序列 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 时间序列(t ...

最新文章

  1. Android 进阶自定义View(4)图表统计LineChartView曲线图的实现
  2. CentOS 7 yum源安装Nginx
  3. Button中command后面函数添加参数解决方法
  4. python基础教学视频-Python基础教程(附教学视频)
  5. mysql sql优化与调优机制详解_MySQL之SQL优化详解(一)
  6. 复习---使用基础语法实现栈及迭代
  7. Super Jumping! Jumping! Jumping! 最长上升子序列+DP
  8. JAVA程序员基本功:开发实现类隐藏及应用
  9. 获取类型的完全限定名
  10. Codeforces Round #173 (Div. 2) E. Sausage Maximization —— 字典树 + 前缀和
  11. sci的figure怎么做_SCI论文中Figure图如何制作?
  12. 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(1)
  13. Linux下的Scala安装
  14. android 跳转京东app,第三方应用跳转到京东app
  15. NCURSES程序设计之皇后问题
  16. 重磅福利 | 知乎上赞同数最高的1000个回答2019最新版
  17. 利用C语言写一个等额本息的还款计算器。
  18. 使用CONSOLE线在思科路由器上看小说
  19. 11-17今日分享SINGSALE使用虚拟卡支付教程
  20. dsf5.0二次开发输入框监听,其他类似

热门文章

  1. Kubernetes容器平台架构之道
  2. tomcat 设置缓存大小
  3. android 半透明色值_Android设置十六进制颜色不同透明度对应的值
  4. 【安卓开机启动】安卓JVM加载so库流程
  5. 区块链赋能医疗产业报告
  6. Word2010中怎样压缩图片使文件变小
  7. JAVA接入微信刷脸支付分支付【V2、V3两种接入都有提供】
  8. 中国前十软件公司招聘官网聚合
  9. 如何录制屏幕视频?有哪些录制技巧?
  10. 宠物医院称可给怀孕宠物剖腹产 医生一对一护理