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)
#生成10个1到10之间的整数
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)

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

被折叠的 条评论
为什么被折叠?



