Python可视化 --条形图(bar)

1.matplotlib模块

应用matplotlib模块绘制条形图,需要调用bar函数,关于该函数的语法和参数含义如下:

bar(x, height, width=0.8, bottom=None, color=None, edgecolor=None,
   linewidth=None, tick_label=None, xerr=None, yerr=None,
   label = None, ecolor=None, align, log=False, **kwargs)
  • x:传递数值序列,指定条形图中x轴上的刻度值。
  • height:传递数值序列,指定条形图y轴上的高度。
  • width:指定条形图的宽度,默认为0.8。 bottom:用于绘制堆叠条形图。
  • color:指定条形图的填充色。
  • edgecolor:指定条形图的边框色。
  • linewidth:指定条形图边框的宽度,如果指定为0,表示不绘制边框。
  • tick_label:指定条形图的刻度标签。
  • xerr:如果参数不为None,表示在条形图的基础上添加误差棒。
  • yerr:参数含义同xerr。
  • label:指定条形图的标签,一般用以添加图例。
  • ecolor:指定条形图误差棒的颜色。
  • align:指定x轴刻度标签的对齐方式,默认为center,表示刻度标签居中对齐,如果设置为edge,则表示在每个条形的左下角呈现刻度标签。
  • log:bool类型参数,是否对坐标轴进行log变换,默认为False。
  • **kwargs:关键字参数,用于对条形图进行其他设置,如透明度等。

bar函数的参数同样很多,希望读者能够认真地掌握每个参数的含义,以便使用时得心应手。下面将基于该函数绘制三类条形图,分别是单变量的垂直或水平条形图堆叠条形图水平交错条形图

2.水平条形图

(1)使用barh()函数绘制条形图

import numpy as np
import matplotlib.pyplot as plt
y = np.arange(5)
x1 = np.array([10,8,7,11,13])
bar_height = 0.3  ## 条形的高度
plt.barh(y,x1,tick_label=['a','b','c','d','e'],height=bar_height)  ##绘制条形图
plt.show()

(2)使用pyplot的barh()函数绘制多组条形的条形图

例题一

import numpy as np
import matplotlib.pyplot as plt
y = np.arange(5)
x1 = np.array([10,8,7,11,13])
x2 = np.array([9,6,5,10,12])
bar_height = 0.3
plt.barh(y,x1,tick_label=['a','b','c','d','e'],height=bar_height)
plt.barh(y+bar_height,x2,height=bar_height)
plt.show()

例题二

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_excel(r'D:\2-3.xls')
x = np.array(df['替代率'])
y = np.arange(1,19)
labels = df['商品种类']
plt.barh(y,x,tick_label=labels,align="center",height=0.6)
plt.show()


例题三

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_excel(r'D:\2-3.xls')

x = df['替代率']
y = np.arange(len(df))
labels = df['商品种类']
plt.barh(y, x, tick_label=labels, align="center", height=0.6)
plt.show()

例题四

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
y = ['家政、家教、保姆等生活服务',
     '飞机票、火车票',
     '家具','手机、手机配件',
     '计算机及其配套产品','汽车用品',
     '通信充值、游戏充值','个人护理用品',
     '书报杂志及音像制品','餐饮、旅游、住宿',
     '家用电器','视频、饮料、烟酒、保健品',
     '家庭日杂用品','保险、演出票务',
     '服装、鞋帽、家用纺织品','数码产品',
     '其他商品和服务','工艺品、收藏品']
x = [95.9,95.1,93.5,92.4,89.3,89.2,
     86.5,86.3,86.0,85.6,85.4,83.5,
     82.6,81.6,79.8,76.5,76.3,67.0]
plt.xlabel('替代率 (%)')
plt.ylabel('商品种类')
plt.barh(y,x)
plt.show()

3.堆积图

import numpy as np 
import matplotlib.pyplot as plt

x = ['购物', '人情往来', '餐饮美食', '通信物流', '生活日用', '交通出行', '休闲娱乐']
ly = [2202, 2234, 1924, 2157, 1985, 3014, 2310]
hy = [957, 1234, 1201, 784, 2147, 1423, 982]

index = np.arange(len(x))
bar_height = 0.35

plt.barh(index, ly, bar_height, label='低', color='b')
plt.barh(index, hy, bar_height, label='高', left=ly, color='r')

plt.yticks(index, x)
plt.legend()
plt.show()

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值