matplotlib

本文介绍了matplotlib库中plt.gcf()和plt.gca()的功能,它们分别用于获取当前的Figure和Axes对象。接着详细讲解了plt.figure()创建Figure对象的参数和用法,并展示了如何使用plt.bar()和plt.barh()绘制柱状图,包括设置各种属性如宽度、颜色、透明度等,以及绘制堆积柱状图的方法。

plt.gcf( )与plt.gca( )

  当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示Get Current Figure和Get Current Axes。在pyplot模块中,许多函数都是对当前的Figure或Axes对象进行处理,比如说:plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图。
准备工作

import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']  #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False  #用来正常显示负号
import numpy as np
x=np.linspace(0.05,10,1000)  #在0.05 ~10之间等间隔取1000个数
y=np.sin(x)
plt.plot(x,y)

在这里插入图片描述
调整边框的颜色

plt.plot(x,y)
ax = plt.gca()
ax.spines['right'].set_color('none')  # 隐藏右边的轴
ax.spines['left'].set_color('pink')
ax.spines['top'].set_color('yellow')
ax.spines['bottom'].set_color('green')

在这里插入图片描述
移动坐标轴的位置

plt.plot(x,y)
ax = plt.gca()
#隐藏上边框和有边框
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
#把x,y轴的刻度命名为bottom,left
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#把x轴(bottom)移动到0点
ax.spines['bottom'].set_position(('data',0))
#把y轴(left)移动到0点
ax.spines['left'].set_position(('data',0))

在这里插入图片描述

plt.figure( ) 创建Figure对象

  • Figure对象是后续绘图操作的总容器。
  • 如果不创建Figure对象,直接调用接下来的plot()进行绘图, matplotib会自动创建一 个Figure对象。
  • 但是事先创建Figure对象则可以对它做更精细的设定。

matplotlib.pyplot.figure((
  num :图形序号(ID) ,不指定时自动递增。如果该图形已存在,则激活相应图形
  figsize:指定figure的宽和高 ,单位为英寸;
  缺省为matplotlib . rcParams [" figure. figsize"]
  dpi :图形分辨率,即每英寸所表示的像素数,缺省为rc figure. dpi
  facecolor :图形背景色,缺省为rc figure. facecolor
  edgecolor :图形边框色,缺省为rc figure. edgecolor
  frameon = True :是否绘制图形外框架
  FigureClass :使用自定义的matplotlib. figure.Figure类
  clear = False :图形已存在时是否清除原有对象

plt.figure("baobei01", figsize=(5,3),dpi = 300, facecolor = "g", edgecolor="red")
plt.plot(x, y)
plt.title("dpi300")

在这里插入图片描述
是否绘制外边框

plt.figure("baobei01",figsize=(5,3),dpi=300,facecolor='g',frameon=False)
plt.plot(x,y)
plt.title("dpi300")	

在这里插入图片描述

plt.bar( )柱状图、plt.barh()条形图

x = np.arange(10)
#生成10110之间的整数
data = np.random.randint(1, 11, 10)
data

在这里插入图片描述

plt.bar(x,data)
plt.show()

在这里插入图片描述
绘制水平条形图

plt.barh(x, data, label = 'bar')
plt.legend(loc=1)
plt.title('horizontal bar chart')
plt.show()

在这里插入图片描述
设置长方形的宽度、线条宽度、透明度、坐标轴标签、填充图案与背景、边框颜色

plt.bar(x,data,width=0.5, facecolor='b',edgecolor='pink',lw = 4,alpha=0.3,hatch='*',tick_label=['one', 'two', 'three','four', 'five'])
plt.show()


倒置柱状图

plt.bar(x,-data)
plt.show()

在这里插入图片描述
绘制多序列柱状图

import pandas as pd
index = np.arange(5)
data1 = [3,4,6,8,9]
data2 = [11,23,6,5,1]
data3 = [12,6,21,8,26]
#把一个空间分为3部分,定义a值为0.3,三个占0.9,剩0.1的空格
a = 0.3
plt.title('nulti bar chart')
plt.bar(index,data1,a,color='pink',label='a')
plt.bar(index+a,data2,a,color='cyan',label='b')
plt.bar(index+2*a,data3,a,color='yellow',label='c')
plt.legend(loc=2)
plt.show()

在这里插入图片描述
绘制多序列条形图

import pandas as pd
index = np.arange(5)
data1 = [3,4,6,8,9]
data2 = [11,23,6,5,1]
data3 = [12,6,21,8,26]
#把一个空间分为3部分,定义a值为0.3,三个占0.9,剩0.1的空格
a = 0.3
plt.title('nulti bar chart')
plt.barh(index,data1,a,color='pink',label='a')
plt.barh(index+a,data2,a,color='cyan',label='b')
plt.barh(index+2*a,data3,a,color='yellow',label='c')
plt.legend(loc=7)
plt.show()

在这里插入图片描述
用DataFrame生成多序列柱状图

df = pd.DataFrame([[1,4,8,2],[4,2,3,7],[9,7,5,2]],columns=['a','b','c','d'])
df
%pylab inline
df.plot(kind='bar')

在这里插入图片描述
绘制堆积柱状图(注意多序列柱状图与堆积柱状图data类型的区别)

import pandas as pd
index = np.arange(5)
data1 = np.array([3,4,6,8,9])  
data2 = np.array([11,23,6,5,1])
data3 = np.array([12,6,21,8,26])
#把一个空间分为3部分,定义a值为0.3,三个占0.9,剩0.1的空格
a = 0.3
plt.title('nulti bar chart')
plt.bar(index,data1,color='pink',label='a')
plt.bar(index,data2,bottom =data1,color='cyan',label='b')
plt.bar(index,data3,bottom = (data2+data1),color='yellow',label='c')
plt.legend(loc=2)
plt.show()

在这里插入图片描述
绘制堆积条形图,使用填充线

import pandas as pd
index = np.arange(5)
data1 = np.array([3,4,6,8,9])
data2 = np.array([11,23,6,5,1])
data3 = np.array([12,6,21,8,26])
plt.barh(index,data1,color='w',label='a',hatch='xxxx')
plt.barh(index,data2,left=data1,color='w',label='b',hatch='///')
plt.barh(index,data3,left=(data2+data1),color='w',label='c',hatch='\\\\')
plt.legend(loc=4)
plt.show()

在这里插入图片描述
用panda DataFrame绘制堆积柱状图

df = pd.DataFrame([[1,4,8,2],[4,2,3,7],[9,7,5,2]],columns=['a','b','c','d'])
df.T.plot(kind='bar',stacked=True)

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值