赞
踩
目录
---------------------------------------------------------------------------------------------------------------------------------
本文将用python数据可视化进行3D图形的制作,包括其中的细节、过程将会一一的给大家展现出来,本人是编程小白,正文里面可能会出现些许讲不清楚的地方,还请大家多多理解,有什么问题欢迎大家在评论区里指正哦
基础概念------3d是three-dimensional的缩写,也就是三维图形。在计算机里显示3d图形,就是说在平面里显示三维图形,而3D的突出特点主要在两个方面
不像现实世界里的,真实的三维空间,有真实的距离空间。计算机里只是看起来很像真实世界,因此在计算机显示的3d图形,就是让人眼看上就像真的一样。人眼有一个特性就是近大远小,就会形成立体感。计算机屏幕是平面二维的,我们之所以能欣赏到真如实物般的三维图像,是因为显示在计算机屏幕上时色彩灰度的不同而使人眼产生视觉上的错觉,而将二维的计算机屏幕感知为三维图像。
基于色彩学的有关知识,三维物体边缘的凸出部分一般显高亮度色,而凹下去的部分由于受光线的遮挡而显暗色。这一认识被广泛应用于网页或其他应用中对按钮、3d线条的绘制。
让我们一起来进入今天的学习。。。。。
(1)导入相关库
(2)导入并读取数据
(3)分组聚合,提取相关数据
(4)手动创建list表
(5)制作三维(3D)柱形图
---------------------------------------------------------------------------------------------------------------------------------
(1)导入相关库
(2)导入并读取数据
(3)剔除缺失值
(4)数据筛选
(5)数据迭形成列表数据
(6)制作三维(3D)散点图
---------------------------------------------------------------------------------------------------------------------------------
(1)导入相关库
(2)导入并读取数据
(3)构造年龄段序列
(4)统计各年龄段的人数
(5)对数据类型进行改造
(6)制作三维(3D)玫瑰图
---------------------------------------------------------------------------------------------------------------------------------
在某些程度上做的还不太好,还是得继续努力哦!
注:如果出现以下
则是表明没有安装这个“pyecharts”库,此时需要打开cmd或者anaconda终端安装此库!
如果要安装其他库也是可以采用此方法哦!
方法:通过清华大学镜像进行安装(国内镜像下载较快):pip install xx(库名) -i https://pypi.tuna.tsinghua.edu.cn/simple
---------------------------------------------------------------------------------------------------------------------------------
- import pyecharts.options as opts
- from pyecharts.charts import Bar3D
- import pandas as pd
- data = pd.read_excel('E:\lcz(可视化课程)\航空公司数据.xlsx')
- data
- gender_level_count = data.groupby(by=['会员卡级别','性别'])['会员卡号'].count()
- gender_level_count
- gender = ['男','女']
- level = [4,5,6] # 手动创建list
-
- list = []
- for i in range(len(level)):
- for j in range(len(gender)):
- list.append([i,j,int(gender_level_count[level[i],gender[j]])]) # 第三维度的数据需要int类型
- list
- c = (
- Bar3D(init_opts=opts.InitOpts(width="400px", height="600px"))
- .add(
- series_name="", # 此参数必须有
- data = list, # 必须接收一个二维list,且元素列表的前两位数字为柱体在3d坐标系中位置的索引
- xaxis3d_opts=opts.Axis3DOpts(type_="category", data=level, name='会员卡等级'),
- yaxis3d_opts=opts.Axis3DOpts(type_="category", data=gender, name='性别'),
- zaxis3d_opts=opts.Axis3DOpts(type_="value", name = '人数'),
- )
- .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) # 显示数据标签
- .set_global_opts(
- visualmap_opts=opts.VisualMapOpts(
- max_ = 1000, # 设置色阶的最大值
- range_color=["#FF4040",
- "#FF82AB",
- "#F08080",
- "#EEC591",
- "#DDA0DD",
- "#DCDCDC"] #色阶数据
- )
- )
- )
- c.render_notebook()
最终结果图如下:
---------------------------------------------------------------------------------------------------------------------------------
import pandas as pd
- data = pd.read_excel(r'气泡图数据.xlsx')
- data
data.dropna(subset=['日期'],inplace=True)
- data_select = data.loc[:100,['牛奶','面包','辣条']]
- x = data_select['面包'].tolist()
- y = data_select['辣条'].tolist()
- z = data_select['牛奶'].tolist()
- z
[[i,j,k] for i,j,k in zip(x,y,z)]
- import pyecharts.options as opts
- from pyecharts.charts import Scatter3D
- c = (
- Scatter3D()
- .add(
- '',
- data = [[i,j,k] for i,j,k in zip(x,y,z)], # 数据:二维数组
- xaxis3d_opts=opts.Axis3DOpts( # x轴配置
- name='面包',
- type_="value",
- ),
- yaxis3d_opts=opts.Axis3DOpts( # y轴配置
- name='辣条',
- type_="value",
- ),
- zaxis3d_opts=opts.Axis3DOpts( # z轴配置
- name='牛奶',
- type_="value",
- ),
- )
- .set_global_opts(
- visualmap_opts=opts.VisualMapOpts(
- max_= max(z),
- range_color=[
- "#66ffcc",
- "#66fff",
- "#00fea8",
- "#6699cc",
- "#996699",
- "#f09a09",
- "#993366",
- ],
- ),
- )
- )
- c.render_notebook()
最终的运行结果如下:
- from pyecharts import options as opts
- from pyecharts.charts import Pie
- from pyecharts.faker import Faker
- import pandas as pd
- data = pd.read_excel(r'航空公司数据(1).xlsx')
- data
data['年龄']
- # 方法1:序列的加工 Series.agg(加工函数)
- def age_range(age):
- if age<20:
- return '少年'
- elif age<40:
- return '青年'
- elif age<60:
- return '中年'
- else:
- return '老年'
- data['年龄段'] = data['年龄'].agg(age_range)
- # 方法2:通过pd.cut()函数实现分箱
- data['年龄段2'] = pd.cut(data['年龄'],bins=[0,20,40,60,100],labels=['少年','青年','中年','老年'])
- data
- result = data.groupby(by='年龄段')['年龄'].count()
- result
- for x,y in zip(['a','b'], [1,2]):
- print(x) # 输出元组对象(和列表类似的对象)
- print(y)
- list = [[x,int(y)] for x,y in zip(result.index, result.values)]
- list
- c = (
- Pie(init_opts=opts.InitOpts(width="600px", height="400px")) # 设置背景的大小
- .add(
- series_name = "年龄段", # 必须项
- data_pair = list,
- radius=["20%", "40%"], # 设置环的大小
- # center=["20%", "50%"], # 设置饼图的位置
- rosetype="radius", # 设置玫瑰图类型
- label_opts=opts.LabelOpts(formatter="{a}:{b}\n个数:{c}\n占比:{d}%"), # 设置标签内容格式
- )
- .set_colors(["#9079ad", "dbd0e6", "#eebbcb", "#38b48b"]) # 颜色设置
- .set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例"),
- legend_opts=opts.LegendOpts(pos_top="10%", pos_left="25%"), # 设置图示的位置
- )
- )
- c.render_notebook()
最终运行结果如下:
---------------------------------------------------------------------------------------------------------------------------------
好啦,以上就是所有内容啦,觉得有用的崽崽点个小红心哦,还有就是,代码运行所用到的表格文件我已放在文章的最前面啦,拜拜。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。