matplotlib学习笔记(三)

本文介绍了如何使用Python的matplotlib库绘制各种条形图和直方图。从基本的直方图绘制,到条形图的实现,包括误差线、堆积条形图以及水平条形图等。还展示了如何使用pandas生成多序列条形图和堆积条形图,以及创建x轴上下两侧的条形图。实例丰富,适合数据分析初学者和进阶者参考。
摘要由CSDN通过智能技术生成
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

1.直方图hist()

data = list([2,3,5,3,3,5,6,7,9,0,8,9,3,8,9,2,1,2,4,1,6])
plt.hist(data,bins=5) # bins=5 将数据分到5个面元中

 2.条形图bar()

plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

2.1画条形图并添加误差线

attr = ['A','B','C','D']
value = [1,2,3,4]
std = [0.3,0.2,0.5,1]
plt.bar(attr,value,yerr=std,error_kw={'ecolor':'r','capsize':6},alpha=0.7,label='test')
plt.legend(loc=2)
plt.title('bar_chart')

 2.2水平条形图

 plt.barh(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

x,y轴互换(添加残差线时应为xerr),其余和垂直条形图barh()相似

attr = ['A','B','C','D']
value = [1,2,3,4]
std = [0.3,0.2,0.5,1]
plt.barh(attr,value,xerr=std,error_kw={'ecolor':'r','capsize':6},alpha=0.7,label='test')
plt.legend(loc=5)
plt.title('hor_bar_chart')

 2.3多序列条形图

attr = ['A','B','C','D']
std = [0.3,0.2,0.5,1]
value1 = [1,2,3,4]
value2 = [2,5,3,1]
value3 = [5,2,6,3]
bw = 0.3
x = np.arange(4)

plt.bar(x,value1,bw,yerr=std,error_kw={'ecolor':'r','capsize':6},alpha=0.7,label='test1')
plt.bar(x+bw,value2,bw,yerr=std,error_kw={'ecolor':'r','capsize':6},alpha=0.7,label='test2')
plt.bar(x+2*bw,value3,bw,yerr=std,error_kw={'ecolor':'r','capsize':6},alpha=0.7,label='test3')

plt.xticks(x+bw,attr)
plt.legend(loc=1)
plt.title('mul_bar_chart')

用pandas直接生成多序列条形图

attr = ['A','B','C','D']
data = {'test1':[1,2,3,4],
        'test2':[2,5,3,1],
        'test3':[5,2,6,3]}
x = [0,1,2,3]
std = [0.3,0.2,0.5,1]
df = pd.DataFrame(data)

df.plot(kind='bar',yerr=std,error_kw={'ecolor':'r','capsize':6},alpha=0.7)
plt.xticks(x,attr)

 2.4多序列堆积条形图

(bottom关键字控制堆积;还可以用hatch关键字来区分不同类型)

x = np.arange(4)
attr = ['A','B','C','D']
value1 = np.array([1,2,3,4])
value2 = np.array([2,5,3,1])
value3 = np.array([5,2,6,3])

plt.bar(x,value1,color='b',hatch='x',alpha=0.6)
plt.bar(x,value2,color='r',bottom=value1,hatch='//',alpha=0.6)
plt.bar(x,value3,color='g',bottom=(value1+value2),alpha=0.6)
plt.title('mul_stack_bar_chart')
plt.xticks(x,attr)

 用pandas直接生成多堆积条形图

(关键字stacked=True)

x = np.arange(4)
attr = ['A','B','C','D']
data = {'test1':[1,2,3,4],
        'test2':[2,5,3,1],
        'test3':[5,2,6,3]}
df = pd.DataFrame(data)

df.plot(kind='bar',stacked=True,alpha=0.7)
plt.xticks(x,attr)

 2.5 x轴上下两侧的条形图

x0 = np.arange(4)
attr = ['A','B','C','D']
value1 = np.array([1,2,3,4])
value2 = np.array([2,5,3,1])

plt.bar(x0,value1,alpha=0.7)
plt.bar(x0,-value2,alpha=0.7)
plt.grid(True)
plt.xticks(x0,attr)
#添加标签
for x,y in zip(x0,value1):
    plt.text(x,y,'%d'%y,va='bottom')
for x,y in zip(x0,value2):
    plt.text(x,-y,'%d'%y,va='top')


参考:

法比奥·内利. Python数据分析实战:第2版.北京:人民邮电出版社, 2019.11.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值