首页 > Python资料 博客日记
【Python数据可视化】简单使用python制作“三维柱形图”、“三维散点图”以及“玫瑰图”
2024-06-04 11:00:05Python资料围观144次
目录
---------------------------------------------------------------------------------------------------------------------------------
一、前言
本文将用python数据可视化进行3D图形的制作,包括其中的细节、过程将会一一的给大家展现出来,本人是编程小白,正文里面可能会出现些许讲不清楚的地方,还请大家多多理解,有什么问题欢迎大家在评论区里指正哦
二、什么是3D?
基础概念------3d是three-dimensional的缩写,也就是三维图形。在计算机里显示3d图形,就是说在平面里显示三维图形,而3D的突出特点主要在两个方面
(1)空间----
不像现实世界里的,真实的三维空间,有真实的距离空间。计算机里只是看起来很像真实世界,因此在计算机显示的3d图形,就是让人眼看上就像真的一样。人眼有一个特性就是近大远小,就会形成立体感。计算机屏幕是平面二维的,我们之所以能欣赏到真如实物般的三维图像,是因为显示在计算机屏幕上时色彩灰度的不同而使人眼产生视觉上的错觉,而将二维的计算机屏幕感知为三维图像。
(2)色彩----
基于色彩学的有关知识,三维物体边缘的凸出部分一般显高亮度色,而凹下去的部分由于受光线的遮挡而显暗色。这一认识被广泛应用于网页或其他应用中对按钮、3d线条的绘制。
三、怎么进行绘图的制作?方法?步骤?
让我们一起来进入今天的学习。。。。。
一、3D柱形图
(1)导入相关库
(2)导入并读取数据
(3)分组聚合,提取相关数据
(4)手动创建list表
(5)制作三维(3D)柱形图
---------------------------------------------------------------------------------------------------------------------------------
二、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
---------------------------------------------------------------------------------------------------------------------------------
一、3D柱形图
(1)导入相关库
import pyecharts.options as opts
from pyecharts.charts import Bar3D
(2)导入并读取数据
import pandas as pd
data = pd.read_excel('E:\lcz(可视化课程)\航空公司数据.xlsx')
data
(3)分组聚合,提取相关字段,形成新的表格数据
gender_level_count = data.groupby(by=['会员卡级别','性别'])['会员卡号'].count()
gender_level_count
(4)手动创建list表
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
(5)制作三维(3D)柱形图
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()
最终结果图如下:
---------------------------------------------------------------------------------------------------------------------------------
二、3D散点图
(1)导入相关库
import pandas as pd
(2)导入并读取数据
data = pd.read_excel(r'气泡图数据.xlsx')
data
(3)剔除缺失值
data.dropna(subset=['日期'],inplace=True)
(4)数据筛选
data_select = data.loc[:100,['牛奶','面包','辣条']]
x = data_select['面包'].tolist()
y = data_select['辣条'].tolist()
z = data_select['牛奶'].tolist()
z
(5)使用for与zip语句联合使用,对多个数据进行迭代形成新的列表数据
[[i,j,k] for i,j,k in zip(x,y,z)]
(6)制作三维(3D)散点图
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()
最终的运行结果如下:
----------------------------------------------------------------------------------------------
三、3D玫瑰图
(1)导入相关库
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
(2)导入并读取数据
import pandas as pd
data = pd.read_excel(r'航空公司数据(1).xlsx')
data
(3)构造年龄段序列
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
(4)统计各年龄段的人数
result = data.groupby(by='年龄段')['年龄'].count()
result
(5)对数据类型进行改造
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
(6)制作三维(3D)玫瑰图
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()
最终运行结果如下:
---------------------------------------------------------------------------------------------------------------------------------
好啦,以上就是所有内容啦,觉得有用的崽崽点个小红心哦,还有就是,代码运行所用到的表格文件我已放在文章的最前面啦,拜拜。。。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj