matplotlib可视化处理

图片与子图

首先导入库

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

图片与子图画布与图像生成

#绘图需要重新拟定一个单元格,尽量避免和其他的数据处理部分放在一起
fig=plt.figure()#生成新图片
ax1=fig.add_subplot(2,2,1)#2*2的图片中选择第一个
ax2=fig.add_subplot(2,2,2)
ax3=fig.add_subplot(2,2,3)
plt.plot([1.5,3.5,-2,1.6])#y轴的值
plt.plot(np.random.randn(50).cumsum(),'k--')#k--用于绘制黑色虚线k是颜色,cumsum()累加和即为本行加上一行的和
fig,axes=plt.subplots(2,2,sharex=True,sharey=True)
for i in range(2):
    for j in range(2):
        axes[i,j].hist(np.random.randn(500),bins=50,color='m',alpha=0.8)#hist为直方图,Bins为直方图的条数,alpha设置透明度
plt.subplots_adjust(wspace=0,hspace=0)#设置图片之间的边距

颜色、标记、线类型

#'g--'显式写法为,linestyle='--',color='g'
from numpy.random import randn
#plt.plot(randn(30).cumsum(),'ko--')#标记凸点直接接在颜色后面即可,等价于
#plt.plot(randn(30).cumsum(),color='k',linestyle='dashed',marker='o')
plt.plot(randn(30).cumsum(),'k-',drawstyle='steps-pre',label='steps-pre')

刻度、标签、图例

设置轴标题、轴标签、刻度、刻度标签

fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(np.random.randn(1000).cumsum())
#改变轴区间标签
ticks=ax.set_xticks([0,250,500,750,1000])
ticks=ax.set_xticklabels([0,250,500,750,1000],rotation=30,fontsize='small')#xticklabels一键设置标签的值、展示方式

添加图例

fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(np.random.randn(1000).cumsum())
ax.plot(randn(1000).cumsum(),'k',label='one')
ax.plot(randn(1000).cumsum(),'k',label='twp')
ax.plot(randn(1000).cumsum(),'k',label='three')
ax.legend(loc='best')#需要在设置好每条线的标签的前提下使用

注释与子图加工

fig=plt.figure()
x = np.arange(0.0, 5.0, 0.01)
y = np.cos(2*np.pi*x)
ax=fig.add_subplot(1,1,1)
ax.plot(x,y)
ax.annotate('local max',#文本内容
            xy=(2,1),#标记值的位置
            xytext=(4, 1.5),#文本位置
            arrowprops=dict(facecolor='black',shrink=0.5))#箭头颜色及箭头两端收缩的百分⽐(占总⻓)

ax.annotate('local min',xy=(1.5,-1),xytext=(2.5,-1.2),arrowprops=dict(facecolor='red',width=2,#箭头宽度
                                                                      headwidth=10,#箭头头部宽度
                                                                      headlength=10))#箭头头部长度

将图片保存到文件

fig.savefig('C:/Users/Desktop/ax.png',dpi=400,bbox_inches='tight')

使用pandas和seaborn绘图

折线图

import seaborn as sns

plt.subplot(221)#设置不同的子图位置,绘制图
s=pd.Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10))
r=pd.DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10))
plt.plot(r)
plt.subplot(212)
plt.plot(s)

柱状图

fig,axes=plt.subplots(2,1)
data=pd.Series(np.random.randn(16),index=list('abcdefghijklmnop'))
data.plot.bar(ax=axes[0],color='m',alpha=0.7)#水平柱状图
data.plot.barh(ax=axes[1],color='m',alpha=0.7)#垂直柱状图
df=pd.DataFrame(np.random.rand(6,4),index=['One','two','three','four','five','six'],columns=pd.Index(['A','B','C','D'],name='Genus'))
df.plot.bar()
df.plot.barh(stacked=True,alpha=0.5,label='step')#stack设置堆积图
#s.value_counts().plot.bar()#series的值频率
import seaborn as sns
sns.barplot(data=df,orient='h')#调用seaborn包,能够显示每个柱子的平均值,黑线为95%的置信区间
sns.set(style='whitegrid')

直方图&密度图

df.plot.hist(bins=50)#直方图
#密度图
df.plot.density()
#利用seaborn是直方图和密度图的绘制更为简单
#如下绘制正态分布直方图
comp1=np.random.normal(0,1,size=200)
comp2=np.random.normal(10,2,size=200)
values=pd.Series(np.concatenate([comp1,comp2]))
sns.distplot(values,bins=100,color='k')

散点图&点图

df=pd.DataFrame(np.random.randn(5,4),index=['198','199','200','201','202'],columns=['cpi','m1','tbilrate','unemp'])
sns.regplot('m1','unemp',data=df)#绘制散点图,并拟合一条线性回归线
sns.pairplot(df,diag_kind='kde',plot_kws={'alpha':0.2})#在对角线上放置每个变量的直方图或密度估计值

分面网格与分类数据

sns.factorplot(x='cpi',y='m1',hue='tbilrate',col='unemp',kind='box',data=df)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值