python画图函数之间画线_《利用Python进行数据分析》学习笔记之Matplotlib : pandas中的绘图函数...

Pandas有许多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法,本文主要介绍的是pandas中的绘图函数。

#coding:utf-8

import matplotlib.pyplot as plt

import pandas as pd

import numpy as np

from pandas import DataFrame,Series

1. 线形图

df.plot( kind='line')

Series 的plot 方法会以index作为X轴,画一条线

DataFrame 的plot 方法会以index作为X轴,给每一列绘制一条线,columns作为图例。

#第一种创建画布和画布分区方法,分开创建figure和subplot对象

fig=plt.figure()

#Series 的线形图

ax1=fig.add_subplot(2,1,1)

s=Series(np.random.rand(10).cumsum(),index=np.arange(0,100,10))

s.plot( kind='line')

plt.xlabel(u"index")

plt.title(u"Serise的线形图")

plt.show()

#DataFrame的线形图

ax2=fig.add_subplot(2,1,2)

df=DataFrame(np.random.rand(10,4).cumsum(0),index=np.arange(0,100,10),columns=pd.Index(['A','B','C','D'],name='Genus'))

df.plot( kind='line')

plt.xlabel(u"index")

plt.title(u"DataFrame的线形图")

plt.show()

其中,Series.plot方法的参数

kind :图的类型,‘line’,'bar','barh','kde'

label :图例标签

ax:需要绘制的对象

rot:旋转角度

xticks:X轴刻度值

xlim:X轴刻度范围

grid:显示网格

2. 柱状图

df.plot( kind='bar') : 垂直柱状图

df.plot( kind='barh') : 水平柱状图

df.plot( kind='bar',stacked=True) : stacked属性为True可以设置为堆积柱状图

Series的柱状图

#第二种创建画布和画布分区方法,创建figure,返回一个subplot对象

fig,axes =plt.subplots(2,1)

s=Series(np.random.rand(16),index=list('abcdefghijklmnop'))

s.plot( kind= 'bar' ,ax=axes[0]) #返回的axes的数组可指定在哪个subplot对象上画图

s.plot( kind= 'barh' ,ax=axes[1])

plt.show()

DataFrame的柱状图

每一行的值为一组,每一列的columns为图例

fig,axes =plt.subplots(2,1)

df=DataFrame(np.random.rand(4,4),index=['one','two','three','four'],columns=pd.Index(['A','B','C','D'],name='Genus'))

df.plot( kind= 'bar',ax=axes[0] )

df.plot( kind= 'bar',ax=axes[1],stacked=True ) #stacked=True 可以生成堆积柱状图

plt.show()

3.密度图( KDE, Kernel Density Estimate ,核密度估计 )

密度图即为连续概率分布图,将分布近似为标准混合正态分布。

df.plot( kind='kde')

fig=plt.figure()

#Series 的密度图

fig.add_subplot(2,1,1)

s=Series(np.random.rand(50).cumsum(),index=np.arange(0,100,2))

s.plot(kind='kde')

plt.title(u"Series的密度图")

plt.show()

#DataFrame 的密度图,会给每一列都画一条密度估计线,并将columns自动生成图例

fig.add_subplot(2,1,2)

df=DataFrame(np.random.rand(10,4).cumsum(0),index=np.arange(0,100,10),columns=pd.Index(['A','B','C','D'],name='Genus'))

df.plot(kind='kde')

plt.title(u"DataFrame的密度图")

plt.show()

4.直方图

直方图是对值频率进行离散化显示的柱状图,数据点呗拆分到离散的、间隔均匀的面元中。

df.hist( bins=10) :bins属性可设置柱子数量

fig=plt.figure()

#Series 的密度图

fig.add_subplot(2,1,1)

s=Series(np.random.rand(20).cumsum(),index=np.arange(0,100,5))

s.hist( bins=10)

plt.title(u"Series的直方图")

plt.show()

#DataFrame 的密度图,会给每一列都画一张直方图,并将列名作为对应标题

fig.add_subplot(2,1,2)

df=DataFrame(np.random.rand(10,4).cumsum(0),index=np.arange(0,100,10),columns=pd.Index(['A','B','C','D'],name='Genus'))

df.hist( bins=10)

plt.show()

5.散点图

散点图是观察两个一维数据间关系的有效方式

plt.scatter(X,Y)

macro = pd.read_csv('macrodata.csv')

data = macro[['cpi','m1','tbilrate','unemp']]

trans_data = np.log(data).diff().dropna()

# 画出两个Series之间的散点图

plt.scatter(trans_data['m1'],trans_data['unemp'])

plt.title('Change in log %s vs.log %s' % ('m1','unemp'))

plt.show()

DataFrame的散点图矩阵

创建散布图矩阵,会把DataFrame中任意两列画散点图,观察其之间的关系。

支持在对角线上放置各变量的直方图或者密度图

pd.scatter_matrix( trans_data ,diagonal = 'kde' ,color ='k' ,alpha=0.3)

# 画出散布图矩阵

pd.plotting.scatter_matrix( trans_data ,diagonal = 'kde' ,color ='k' ,alpha=0.3)

plt.show()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值