基于Python的绘图与可视化

简单介绍matplotlib

是一个2D的绘图包,他还有很多插件工具集,用于3D图形的mplot3d以及用于地图和投影的basemap

import matplotlib.pyplot as plt
from numpy.random import randn
import pandas as pd
from pandas import DataFrame,Series
import numpy as np

1、基本绘图

fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax3.plot(randn(50).cumsum(),'k--')
## 柱状图
ax1.hist(randn(100),bins=20,color='k',alpha=0.3)
## 散点图
ax2.scatter(np.arange(30),np.arange(30)*3+randn(30))
plt.show()

在这里插入图片描述

subplot可以创建一个新的figure。并返回一个含有一创建的subplot对象的numpy数组

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

调整subplot周围的间距,wspace,hspace 用来控制宽度和高度的百分比

## 主要参数
### subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None)
fig1 = plt.figure()
fig1,axes = plt.subplots(2,2,sharex=True,sharey=True)
for i in range(2):
    for j in range(2):
        axes[i,j].hist(randn(500),bins=50,color='k',alpha=0.5)
plt.subplots_adjust(wspace=0,hspace=0)
plt.show()

2、设置轴标签、刻度和刻度标签

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(randn(1000).cumsum())
设置刻度宽度
ticks = ax.set_xticks([0,250,500,750,1000])
设置刻度标签
labels = ax.set_xticklabels(['one','two','three','four','five'],rotation=30,fontsize='small')
ax.set_xlabel('Stages')
plt.show()

在这里插入图片描述

3、注解

ax.text(x,y,'hello world',family='monospace',fontsize=10)

要在图表中添加一个图形,需要创建一个块对象shp
fig=plt.figure()
ax = fig.add_subplot(1,1,1)
rect=plt.Rectangle((0.2,0.75),0.4,0.15,color='k',alpha=0.3)
circ=plt.Circle((0.7,0.2),0.15,color='b',alpha=0.3)
pgon=plt.Polygon([[0.15,0.15],[0.35,0.4],[0.2,0.6]],color='g',alpha=0.5)
ax.add_patch(rect)
ax.add_patch(circ)
ax.add_patch(pgon)
plt.show()

在这里插入图片描述

4、将图表保存到文件

fig.savefig('re-ci-pg.png')

5、matplotlib配置

将全局管理图像大小、subplot边距、配色方案、字体大小、网络类型
  • 通过python编程方式,将全局的图像默认大小设置为10*10
plt.rc('figure',figsize=(10,10))
font_option = {'family':'monospace',
               'weight':'bold',
               'size':'small'}
plt.rc('font',**font_option)

可以配置文件matplotlibrc位于matplotlib/mpl-data目录中,并将其放在自己的matplotlibrc目录中

6、线型图

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

在这里插入图片描述

df=DataFrame(np.random.rand(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10))
df.plot()
plt.show()

在这里插入图片描述

7、柱状图

kind='bar'表示垂直柱状图,kind='barh'表示水平柱状图,SeriesDataFrame的索引会被用来做X或Y

fig,axes = plt.subplots(2,1)
data=Series(np.random.rand(16),index=list('abcdefghijklmnop'))
data.plot(kind='bar',ax=axes[0],color='k',alpha=0.7)
data.plot(kind='barh',ax=axes[1],color='k',alpha=0.7)
plt.show()

在这里插入图片描述

  • 对于DataFrame
df = DataFrame(np.random.rand(6,4),index=['one','two','three','four','five','six'],
               columns=pd.Index(['A','B','C','D'],name='Genus'))
df
Out:
Genus	A	B	C	D
one	0.170127	0.006826	0.906227	0.627840
two	0.425502	0.668585	0.800707	0.477013
three	0.784296	0.983987	0.318071	0.966247
four	0.822363	0.227549	0.203001	0.233771
five	0.532559	0.616758	0.233564	0.988166
six	0.534776	0.426271	0.331994	0.974694

stacked=True表示生成堆积柱状图

df.plot(kind='bar',stacked=True,alpha=0.5)
plt.show()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值