栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python数据分析U3-matplotlib可视化高级

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python数据分析U3-matplotlib可视化高级

一 Python数据分析U3-matplotlib可视化基础 二 Python数据分析U3-matplotlib可视化高级 1、折线图
import matplotlib.pyplot as plt
x = [1,2,3]
y = [2,3,6]
plt.plot(x,y)#绘制折线图
plt.show

2、直方图
import matplotlib.pyplot as plt
import numpy as np
data = np.random.randn(10000)
# bins为颗粒度、及直方图的柱形数量,edgecolor为边框颜色
plt.hist(data,bins=40,edgecolor='black')
plt.savefig("p1")
plt.show()

3、条形图
import numpy as np
import matplotlib
# matplotlib.use('nbagg')#(jupyter图形显示)
import matplotlib.pyplot as plt
# %matplotlib#(pycharm或jupyter图形独立显示)
np.random.seed(0)
x = np.arange(5)
y = np.random.randint(-5,5,5)
print (y)
fig,axes = plt.subplots(ncols = 2)
v_bars = axes[0].bar(x,y,color='red')
h_bars = axes[1].barh(x,y,color='blue')

axes[0].axhline(0,color='grey',linewidth=2)
axes[1].axvline(0,color='grey',linewidth=2)
plt.savefig('img/pi')
plt.show()


在绘图过程中,有事需要考虑误差棒,以表示数据或实验的偏离情况

variance = [0.2,0.4,0.5]

mean_values = [1,2,3]
variance = [0.2,0.4,0.5]
bar_label = ['bar1','bar2','bar3']

x_pos = list(range(len(bar_label)))
plt.bar(x_pos,mean_values,yerr=variance,alpha=0.3)
max_y = max(zip(mean_values,variance))
plt.ylim([0,(max_y[0]+max_y[1])*1.2])#[0,(max_y[0]+max_y[1])*1.2]
plt.ylabel('variable y')
plt.xticks(x_pos,bar_label)
plt.show()

有时候我们需要多组数据对比

import numpy as np
import matplotlib
# matplotlib.use('nbagg')
import matplotlib.pyplot as plt
# %matplotlib
import numpy as np

x1 = np.array([1,2,3])
x2 = np.array([2,2,3])

bar_labels = ['bat1','bar2','bar3']
fig = plt.figure(figsize = (8,6))
y_pos = np.arange(len(x1))
print(y_pos)
y_pos = [x for x in y_pos]
print(y_pos)
plt.barh(y_pos,x1,color='g',alpha = 0.5)
plt.barh(y_pos,-x2,color='b',alpha = 0.5)

plt.xlim(-max(x2)-1,max(x1)+1)
plt.ylim(-1,len(x1)+1)
plt.savefig('img/p2')
plt.show()

注意:论文如果不彩色打印,绘制打印出来的图几乎一样,没有色彩渲染,以下可以这样绘制

patterns = ('-', '+', 'x', '\', '*', 'o', 'O', '.')

fig = plt.gca()

mean_value = range(1,len(patterns)+1)
x_pos = list(range(len(mean_value)))

bars = plt.bar(x_pos,mean_value,color='white',edgecolor='black')

for bar,pattern in zip(bars,patterns):
    bar.set_hatch(pattern)
plt.show()

4、盒图

梳理统计中经常用到盒图分析数据从上到下:最大值(max)、上四分位数(Q3)、中位数(median)、下四分位数(Q1)、最小值(min)

导入需要的库

import matplotlib.pyplot as plt
import numpy as np

常用属性,建议直接copy(亲测实用!!)

属性说明
notch展示箱图是否凹口,默认False
sym设置异常数据样式
meanline均值样式,这里绿色表示均值
showmeans显示均值线

实例:

import matplotlib.pyplot as plt
import numpy as np
tang_data = [np.random.normal(0,std,100) for std in range(1,4)]
fig = plt.figure(figsize = (8,6))
plt.boxplot(tang_data,notch=True,sym='+',meanline=True,showmeans=True)

plt.xticks([y+1 for y in range(len(tang_data))],['x1','x2','x3'])
plt.xlabel('x')
plt.title('box plot')
plt.show()
5、散点图

散点图反应数据分散情况,为以后数据建模回归分析具有很大作用

实例:

N=1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x,y,alpha=0.5)
plt.grid(True)
plt.show()


给点设置颜色添加美观

import matplotlib.pyplot as plt
import numpy as np
 
n = 1000
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X)#for color later on
 
plt.scatter(X,Y,s = 75,c = T,alpha = .5)
 
plt.xlim((-1.5,1.5))
plt.xticks([])#ignore xticks
plt.ylim((-1.5,1.5))
plt.yticks([])#ignore yticks
plt.savefig('img/p6')
plt.show()

6、3D

如果需要绘制3D图,需要额外导入3D库

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

基础三维坐标显示

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111,projection = '3d')
plt.show()

3D绘制

fig = plt.figure()
ax = Axes3D(fig)
#X Y value
X = np.arange(-4,4,0.25)
Y = np.arange(-4,4,0.25)
X,Y = np.meshgrid(X,Y)
R = np.sqrt(X**2 + Y**2)
#hight value
Z = np.sin(R)
 
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
"""
============= ================================================
        Argument      Description
        ============= ================================================
        *X*, *Y*, *Z* Data values as 2D arrays(数据值作为2D数组)
        *rstride*     Array row stride (step size), defaults to 10(数组行步幅(步长),默认为10)
        *cstride*     Array column stride (step size), defaults to 10(数组列步幅(步长),默认为10)
        *color*       Color of the surface patches(表面斑块的颜色)
        *cmap*        A colormap for the surface patches.(表面补丁的彩色地图)
        *facecolors*  Face colors for the individual patches(面部颜色的个别补)
        *norm*        An instance of Normalize to map values to colors(Normalize将值映射到颜色的实例)
        *vmin*        Minimum value to map(最小映射值)
        *vmax*        Maximum value to map
        *shade*       Whether to shade the facecolors(是否要遮光脸的颜色)
        ============= ================================================
"""

ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))
"""
==========  ================================================
        Argument    Description
        ==========  ================================================
        *X*, *Y*,   Data values as numpy.arrays
        *Z*
        *zdir*      The direction to use: x, y or z (default)(使用方向:x, y或z(默认))
        *offset*    If specified plot a projection of the filled contour
                    on this position in plane normal to zdir(如果指定,绘制填充轮廓的投影
在垂直于zdir的平面上的这个位置)
        ==========  ================================================
"""
ax.set_zlim(-2, 2)
plt.savefig('img/p7')
plt.show()

三维柱形图

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

# %matplotlib

fig = plt.figure()  
ax = fig.add_subplot(111, projection='3d') 

for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]): 
    xs = np.arange(20)
    ys = np.random.rand(20)
    cs = [c]*len(xs)
    ax.bar(xs,ys,zs = z,zdir='y',color = cs,alpha = 0.5)
plt.show()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/326933.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号