通过plt.xxx()直接绘图
- plt中用于绘图的部分函数
函数名 | 作用 |
---|---|
plt.bar() | 条形图 |
plt.barh() | 横排条形图 |
plt.boxplot() | 箱线图 |
plt.hist() | 频率直方图 |
plt.plot() | 折线图 |
- plt中用于设置的部分函数
函数名 | 作用 |
---|---|
plt.title() | 设置图表标题 |
plt.grid() | 设置图表网格 |
plt.xlable() | 设置x轴标题 |
plt.ylable() | 设置y轴标题 |
plt.xticks() | 设置x轴刻度 |
plt.yticks() | 设置y轴刻度 |
plt.xlim() | 设置x轴范围 |
plt.ylim() | 设置y轴范围 |
plt.annotate() | 设置标注 |
用plt绘图的方便之处,就是它没有一个显性的对象,我们也可以调用pandas来绘图
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
plt.rcParams['figure.figsize'] = (8, 6)
plt.rcParams['figure.dpi'] = 120
import pandas as pd
data = Series([1.47,1.62,1.78,1.94,2.38,2.60],index=['2012','2013','2014','2015','2016','2017'])
#注意下一行的对象是'data',它是一个series对象,调用的是pandas绘图函数
data.plot(label='income', color = 'r', linestyle=':', marker = 's')
# 调用plt的函数对其进行设置
plt.title('Income chart')
plt.title('Income chart',fontsize=20)
plt.xlabel('Year',fontsize=15)
plt.ylabel('income',fontsize=15)
plt.annotate('Largest point',xy=(5,2.60),xytext=(3,2.5), arrowprops=dict(arrowstyle='->',color='green'))
plt.show()
该例子展示了pyplot(plt)的特点,不用指明对象就能进行绘图和设置,当我们在同一个程序中的图比较少的时候这是方便的,但当我们同一个程序中的图很多的时候,这种没有显性对象的方式会导致我们没有办法重新调用之前的图(因为没有对象名)。
实例化figure和axes对象后绘图
在matplotlib中,有两个重要的对象类型:
- figure对象可以把它想成一张空白图纸,在上面可以绘制一个或多个axes对象(还可以有其他对象等)。
- axes对象是一个图像的主要部分(它包括了图线、xy轴等部分)。
我们可以使用plt接口生成figure对象和axes对象,然后对axes对象调用方法来实现画图和设置。
总体思路是:
1.实例化figure对象
2.实例化axes对象
3.对axes对象调用方法进行画图和设置
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
plt.rcParams['figure.figsize'] = (8, 6)
plt.rcParams['figure.dpi'] = 120
from pandas import Series
data = Series([1.47,1.62,1.78,1.94,2.38,2.60],index=['2012','2013','2014','2015','2016','2017'])
#调用plt接口,实例化figure1对象
fig = plt.figure() # 生成空白图像
#实例化ax1对象
ax = fig.add_subplot(111)#ax1是figure1的第1行第一列的第1张图表
#注意下一行的对象是'ax1',它是一个axes对象,调用的是matplotlib.axes绘图函数
ax.plot(data,label='income', color = 'r', linestyle=':', marker = 's')
#接下来我们调用ax1的方法对它进行设置
ax.set_title('Income chart',fontsize=20)
ax.set_xlabel('Year',fontsize=18)
ax.set_ylabel('income',fontsize=18)
ax.annotate('Largest point',xy=(5,2.60),xytext=(3,2.5), arrowprops=dict(arrowstyle='->',color='green'))
plt.show()
用这种方式画出来的图,每一个对象都有它自己的名字,方便后面继续调用、修改。
- axes对象用于绘图的部分方法函数
函数名 | 作用 |
---|---|
ax.bar() | 条形图 |
ax.barh() | 横排条形图 |
ax.boxplot() | 箱线图 |
ax.hist() | 频率直方图 |
ax.plot() | 折线图 |
- axes对象中用于设置的部分方法函数
函数名 | 作用 |
---|---|
ax.set_title() | 设置图表标题 |
ax.set_xlable() | 设置x轴标题 |
ax.set_ylable() | 设置y轴标题 |
ax.set_xticks() | 设置x轴刻度 |
ax.set_yticks() | 设置y轴刻度 |
ax.set_xlim() | 设置x轴范围 |
ax.set_ylim() | 设置y轴范围 |
ax.set_annotate() | 设置标注 |
plt的画图函数详解
1.plt.legend
plt.legend(loc = 0) #显示图例的位置,自适应方式
‘best’: 0, (only implemented for axes legends)(自适应方式)
‘upper right’: 1
‘upper left’: 2
‘lower left’: 3
‘lower right’: 4
‘right’: 5
‘center left’: 6
‘center right’: 7,
‘lower center’: 8
‘upper center’: 9
‘center’: 10
2. plt.figure
#设置绘图区域的大小和像素
plt.figure(figsize=(14,6),dpi=80)
3.plt.xticks
#设置x轴的刻度线为new_year,new_year可以为数组
plt.xticks(new_year)
4.plt.xlabel
plt.xlabel('year') #x轴标签
5.plt.plot
#将实际值的折线设置为蓝色
plt.plot(number,color='blue',label='actual value' )
6.两个图分开
fig, axes = plt.subplots(2,1,sharex=True,figsize=(10,10))
axes[0].plot(range(len(data20)),data20,'r')
axes[1].plot(range(len(data40)),data40,'b')
7.中文显示,图像分辨率,全局设置图像大小
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
plt.rcParams['figure.figsize'] = (10.0, 8.0)
8.关闭警告
import warnings
warnings.filterwarnings('ignore')