【Python】绘制三维立体图

平常我们看到的物体一般是三维空间中的立体图形,今天跟大家一起来学习用Python绘制立体图形。

在这里插入图片描述
  

一、导入绘图数据


首先导入绘图所需的数据。

import os
import pandas as pd
​
os.chdir(r'F:\公众号\6.学习python')   #设置成存放数据文件夹路径
date = pd.read_csv("股票数据.csv", encoding = 'GBK')    #读取数据

注:如需文中数据进行练习,可到公众号中回复“股票数据波动”即可免费获取。
  
展示前几行数据如下:
  
在这里插入图片描述

  
  

二、绘制三维图

1 绘制三维线性图

  
为了熟悉三维空间图形的绘图原理,首先创建由5个点依次连接而成的三维线图,具体语句如下:

import matplotlib.pyplot as plt          #导入库
from mpl_toolkits.mplot3d import Axes3D  #导入库
​
plt.rcParams['font.sans-serif'] = ['SimHei']   #解决中文显示问题
plt.rcParams['axes.unicode_minus'] = False    # 解决中文显示问题
​
plt.subplot(projection='3d')              #设置3D绘图空间
x = [0, 0, 1, 4, 5]                       #设置x轴坐标
y = [1, 1, 1, 1, 2]                       #设置y轴坐标
z = [2, 0, 3, 4, 5]                       #设置z轴坐标
plt.plot(x, y, z)                         #绘制5个点对应连线的三维线性图
plt.xlabel('x轴')                         #给横轴命名
plt.ylabel('y轴')                         #给纵轴命名
plt.title('三维线图')                     #添加标题
plt.show()

得到结果如下:
  
在这里插入图片描述

  
  

2 用股票数据绘制三维折线图

  
按年月分组,统计股票收盘价的均值,并以年对应的标签为x轴,月对应的标签为y轴,收盘价对应的数值为z轴,绘制三维折线图,具体语句如下:

date = date.set_index('日期')                  #把日期列设为索引
date.index = pd.to_datetime(date.index)        #把索引转为时间格式
result = date[['收盘价']].groupby([date.index.year, date.index.month]).mean()  #按年和月分组对收盘价求均值
plt.subplot(projection='3d')                   #设置3D绘图空间
plt.plot(result.index.codes[0], result.index.codes[1], result['收盘价'])       #
plt.xlabel('对应年标签')                       #给x轴添加标签
plt.ylabel('对应月标签')                       #给y轴添加标签
plt.title('按年月绘制收盘价的变化趋势三维图')  #添加标题
plt.show()

得到结果如下:
  
在这里插入图片描述

  
  

3 用股票数据绘制三维散点图

  
按年月分组,统计收盘价均值、换手率均值、成交笔数均值,分别作为x轴、y轴、z轴绘制三维散点图,具体语句如下:

result = date.groupby([date.index.year, date.index.month]).agg(val1=('收盘价', 'mean'), val2=('换手率', 'mean'), val3=('成交笔数', 'mean'))
ax = plt.subplot(projection='3d')                            #设置3D绘图空间
ax.scatter(result['val1'], result['val2'], result['val3'])   #绘制散点图 
plt.xlabel('按年月统计收盘价均值')                           #给x轴添加标签
plt.ylabel('按年月统计换手率均值')                           #给y轴添加标签
plt.title('股票数据三维散点图')                              #添加标题
plt.show()

得到结果如下:
  
在这里插入图片描述

  
  

4 用股票数据绘制三维柱状图

  
按年月分组,统计股票收盘价的均值。并以月对应标签为x轴,每月对应收盘价均值为y轴,年对应标签为z轴,绘制三维柱状图,具体语句如下:

import matplotlib.cm as cm       #导入库
​
result = date[['收盘价']].groupby([date.index.year, date.index.month]).mean()  #按年月统计收盘价均值
plt.subplot(projection='3d')     #设置3D绘图空间
plt.bar(result.index.codes[1], result['收盘价'], zs=result.index.codes[0], color=cm.ScalarMappable().to_rgba(result.index.codes[0])) #按年月绘制收盘价3维条形图
sm = plt.cm.ScalarMappable(norm=plt.Normalize(vmin=result.index.codes[0].min(), vmax=result.index.codes[0].max()))
plt.colorbar(sm)                 #显示对应数值的颜色条
plt.xlabel('对应月标签')         #给x轴添加标签
plt.ylabel('每月对应收盘价均值') #给y轴添加标签
plt.title('三维条形图')          #添加标题
plt.show()

得到结果如下:
  
在这里插入图片描述

  
  

5 用bar3d函数绘制三维柱状图

  
为了让三维柱状图绘制得更加清晰,用bar3d函数绘制一版三维柱状图,具体语句如下:

result = date[['收盘价']].groupby([date.index.year, date.index.month]).mean()   #按年月统计收盘价均值
ax = plt.subplot(projection='3d')   #设置3D绘图空间
ax.bar3d(x=result.index.codes[0], y=result.index.codes[1], z=0, dx=1, dy=1, dz=result['收盘价'], color=cm.ScalarMappable().to_rgba(result.index.codes[0]))  #绘制3d直方图
plt.xlabel('年对应标签')            #给x轴添加标签
plt.ylabel('月对应标签')            #给y轴添加标签
plt.title('3维直方图')              #添加标题
plt.show()

参数解释:

    x:每个方柱对应底部点的横坐标。

    y:每个方柱对应底部点的纵坐标。

    z:每个方柱绘制的起始高度。

    dx:每个方块宽度。

    dy:每个方块厚度。

    dz:每个方块高度。
  
得到结果如下:
  
在这里插入图片描述

  
至此,在Python中绘制三维图已全部讲解完毕,感兴趣的同学可以自己实现一遍。

  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。

Guess you like

Origin blog.csdn.net/qq_32532663/article/details/113945947