首页 > Python资料 博客日记

【Python数据可视化】简单使用python制作“三维柱形图”、“三维散点图”以及“玫瑰图”

2024-06-04 11:00:05Python资料围观144

Python资料网推荐【Python数据可视化】简单使用python制作“三维柱形图”、“三维散点图”以及“玫瑰图”这篇文章给大家,欢迎收藏Python资料网享受知识的乐趣

目录

一、前言

二、什么是3D?

(1)空间----

 (2)色彩----

三、怎么进行绘图的制作?方法?步骤?

一、3D柱形图

二、3D散点图

三、玫瑰图

四、总结

---------------------------------------------------------------------------------------------------------------------------------

一、前言

本文将用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()

最终运行结果如下:

---------------------------------------------------------------------------------------------------------------------------------

好啦,以上就是所有内容啦,觉得有用的崽崽点个小红心哦,还有就是,代码运行所用到的表格文件我已放在文章的最前面啦,拜拜。。。


版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐