matprolib可视化处理
程序员文章站
2024-02-13 19:46:46
...
Matprolib可视化处理
图片与子图
首先导入库
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)
上一篇: vue 路由权限配置
下一篇: CentOS双网卡配置默认路由