【python】pandas & matplotlib 数据处理 绘制曲面图

Python matplotlib模块,是扩展的MATLAB的一个绘图工具库,它可以绘制各种图形

建议安装 Anaconda后使用 ,集成了很多第三库,基本满足大家的需求,下载地址,对应选择python 2.7 或是 3.5 的就可以了:
 https://www.continuum.io/downloads#windows

脚本默认执行方式:
              1.获取当前文件夹下的1.log文件
              2.将数据格式化为矩阵
              3.以矩阵的列索引为x坐标,行索引为y坐标,值为z坐标
              4.绘制曲面图
测试数据
测试所用数据:
 
r_gain= 79.000000f,  89.000000f, 104.000000f, 120.000000f, 135.000000f, 149.000000f, 160.000000f, 172.000000f, 176.000000f, 172.000000f, 164.000000f, 159.000000f, 143.000000f, 128.000000f, 113.000000f,  97.000000f,  81.000000f,
r_gain= 84.000000f, 100.000000f, 120.000000f, 136.000000f, 156.000000f, 176.000000f, 192.000000f, 204.000000f, 208.000000f, 204.000000f, 196.000000f, 180.000000f, 164.000000f, 144.000000f, 124.000000f, 108.000000f,  92.000000f,
r_gain= 91.000000f, 112.000000f, 132.000000f, 156.000000f, 176.000000f, 200.000000f, 224.000000f, 240.000000f, 248.000000f, 244.000000f, 228.000000f, 208.000000f, 188.000000f, 164.000000f, 140.000000f, 120.000000f,  99.000000f,
r_gain= 99.000000f, 120.000000f, 144.000000f, 172.000000f, 200.000000f, 228.000000f, 256.000000f, 276.000000f, 284.000000f, 280.000000f, 264.000000f, 240.000000f, 208.000000f, 180.000000f, 156.000000f, 132.000000f, 105.000000f,
r_gain=107.000000f, 128.000000f, 156.000000f, 184.000000f, 216.000000f, 256.000000f, 288.000000f, 308.000000f, 320.000000f, 316.000000f, 296.000000f, 264.000000f, 228.000000f, 196.000000f, 164.000000f, 140.000000f, 113.000000f,
r_gain=111.000000f, 132.000000f, 160.000000f, 192.000000f, 232.000000f, 272.000000f, 304.000000f, 332.000000f, 340.000000f, 336.000000f, 316.000000f, 284.000000f, 244.000000f, 204.000000f, 172.000000f, 144.000000f, 117.000000f,
r_gain=109.000000f, 136.000000f, 164.000000f, 196.000000f, 232.000000f, 276.000000f, 312.000000f, 336.000000f, 348.000000f, 344.000000f, 320.000000f, 288.000000f, 248.000000f, 208.000000f, 172.000000f, 144.000000f, 117.000000f,
r_gain=111.000000f, 132.000000f, 160.000000f, 192.000000f, 228.000000f, 268.000000f, 304.000000f, 328.000000f, 340.000000f, 332.000000f, 312.000000f, 280.000000f, 240.000000f, 200.000000f, 168.000000f, 140.000000f, 119.000000f,
r_gain=101.000000f, 128.000000f, 152.000000f, 180.000000f, 212.000000f, 248.000000f, 280.000000f, 304.000000f, 312.000000f, 308.000000f, 288.000000f, 260.000000f, 224.000000f, 192.000000f, 160.000000f, 136.000000f, 109.000000f,
r_gain= 95.000000f, 116.000000f, 140.000000f, 164.000000f, 192.000000f, 224.000000f, 248.000000f, 272.000000f, 280.000000f, 272.000000f, 256.000000f, 232.000000f, 200.000000f, 176.000000f, 152.000000f, 128.000000f, 101.000000f,
r_gain= 87.000000f, 108.000000f, 128.000000f, 148.000000f, 172.000000f, 192.000000f, 216.000000f, 232.000000f, 236.000000f, 232.000000f, 220.000000f, 200.000000f, 180.000000f, 156.000000f, 136.000000f, 116.000000f,  95.000000f,
r_gain= 80.000000f,  96.000000f, 112.000000f, 132.000000f, 148.000000f, 168.000000f, 180.000000f, 192.000000f, 196.000000f, 196.000000f, 184.000000f, 172.000000f, 156.000000f, 136.000000f, 120.000000f, 104.000000f,  88.000000f,
r_gain= 69.000000f,  85.000000f,  96.000000f, 111.000000f, 127.000000f, 141.000000f, 153.000000f, 160.000000f, 164.000000f, 159.000000f, 157.000000f, 145.000000f, 135.000000f, 120.000000f, 104.000000f,  88.000000f,  77.000000f,

测试曲面图

曲面图脚本
# -*- coding: utf-8 -*-
 
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from pandas import DataFrame
 
 
def draw(x, y, z):
     '''
     采用matplolib绘制曲面图
     :param x: x轴坐标数组
     :param y: y轴坐标数组
     :param z: z轴坐标数组
     :return:
     '''
     X = x
     Y = y
     Z = z
 
     fig = plt.figure()
     ax = fig.add_subplot( 111 , projection = '3d' )
     ax.plot_trisurf(X, Y, Z)
     plt.show()
 
if __name__ = = '__main__' :
     '''
        默认执行方式:
              1.获取当前文件夹下的1.log文件
              2.将数据格式化为矩阵
              3.以矩阵的列索引为x坐标,行索引为y坐标,值为z坐标
              4.绘制曲面图
     '''
     data = {}
     index_origin = 0
     f = open ( "1.log" )
     line = f.readline()
     while line:
         data[index_origin] = line.split( '=' )[ - 1 ].replace( ' ' , ' ').split(' f,')[ 0 : - 1 ]
         index_origin = index_origin + 1
         line = f.readline()
     f.close()
     df = DataFrame(data)
     df = df.T
 
     x = []
     for i in range ( len (df.index)):
         x = x + list (df.columns)
     print (x)
 
     y = []
     for i in range ( len (df.index)):
         for m in range ( 17 ):
             y.append(i)
     print (y)
 
     z = []
     for i in range ( len (df.index)):
         z = z + df[i:i + 1 ].values.tolist()[ 0 ]
     z = map ( float , z)
     print (z)
     draw(x, y, z)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值