Esempio n. 1
0
def line3d_base():
    data = []
    for t in range(0, 25000):
        _t = t / 1000
        x = (1 + 0.25 * math.cos(75 * _t)) * math.cos(_t)
        y = (1 + 0.25 * math.cos(75 * _t)) * math.sin(_t)
        z = _t + 2.0 * math.sin(75 * _t)
        data.append([x, y, z])
    line3d = Line3D()
    line3d.add(
        "",
        data,
        xaxis3d_opts=opts.Axis3DOpts(type_="value"),
        yaxis3d_opts=opts.Axis3DOpts(type_="value"),
        grid3d_opts=opts.Grid3DOpts(width=100, depth=100),
    )
    line3d.set_global_opts(
        title_opts=opts.TitleOpts(title="Line3D-基本示例"),
        visualmap_opts=opts.VisualMapOpts(max_=30)
    )
    line3d.render("./line3d_base.html")
Esempio n. 2
0
def line3d_base() -> Line3D:
    data = []
    for t in range(0, 25000):
        _t = t / 1000
        x = (1 + 0.25 * math.cos(75 * _t)) * math.cos(_t)
        y = (1 + 0.25 * math.cos(75 * _t)) * math.sin(_t)
        z = _t + 2.0 * math.sin(75 * _t)
        data.append([x, y, z])
    c = (Line3D().add(
        "",
        data,
        xaxis3d_opts=opts.Axis3DOpts(Faker.clock, type_="value"),
        yaxis3d_opts=opts.Axis3DOpts(Faker.week_en, type_="value"),
        grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100),
    ).set_global_opts(
        visualmap_opts=opts.VisualMapOpts(max_=30,
                                          min_=0,
                                          range_color=Faker.visual_color),
        title_opts=opts.TitleOpts(title="Line3D-基本示例"),
    ))
    return c
Esempio n. 3
0
def scatter3d_base() -> Scatter3D:
    # data = [
    #     [random.randint(0, 100), random.randint(0, 200), random.randint(0, 100)]
    #     for _ in range(10000)
    # ]
    data, max_rel = read_as_info(
        '..\\000LocalData\\as_compare\\as_core_map_data_integrate20191203.csv')
    c = (Scatter3D(init_opts=opts.InitOpts(
        width="1080px",
        height="1080px",
        page_title="全球互联网网络3D散点图",
        theme=ThemeType.ROMANTIC)).add(
            "随机散点",
            data,
            grid3d_opts=opts.Grid3DOpts(width=300,
                                        height=160,
                                        depth=300,
                                        rotate_speed=5,
                                        is_rotate=True,
                                        rotate_sensitivity=2),
            xaxis3d_opts=opts.Axis3DOpts(type_="value",
                                         name="经度",
                                         min_=180.0,
                                         max_=-180.0),
            yaxis3d_opts=opts.Axis3DOpts(type_="value",
                                         name="维度",
                                         min_=-180.0,
                                         max_=180.0),
            zaxis3d_opts=opts.Axis3DOpts(type_="value",
                                         name="连通度",
                                         min_=0,
                                         max_=max_rel + 1),
            itemstyle_opts=opts.ItemStyleOpts()).set_global_opts(
                title_opts=opts.TitleOpts("全球互联网网络3D散点图"),
                visualmap_opts=opts.VisualMapOpts(
                    range_color=Faker.visual_color),
            ))
    print(data)
    print(Faker.visual_color)
    return c
Esempio n. 4
0
def surface3D_flower() -> Surface3D:
    def surface3d_data():
        for t0 in range(-30, 30, 1):
            y = t0 / 10
            for t1 in range(-30, 30, 1):
                x = t1 / 10
                z = math.sin(x * x + y * y) * x / 3.14
                yield [x, y, z]

    c = (Surface3D().add(
        "",
        list(surface3d_data()),
        xaxis3d_opts=opts.Axis3DOpts(type_="value"),
        yaxis3d_opts=opts.Axis3DOpts(type_="value"),
        grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100),
    ).set_global_opts(
        title_opts=opts.TitleOpts(title="Surface3D-曲面波图"),
        visualmap_opts=opts.VisualMapOpts(max_=1,
                                          min_=-1,
                                          range_color=Faker.visual_color),
    ))
    return c
Esempio n. 5
0
def test_surface3d_base():
    def surface3d_data():
        for t0 in range(-60, 60, 1):
            y = t0 / 60
            for t1 in range(-60, 60, 1):
                x = t1 / 60
                if math.fabs(x) < 0.1 and math.fabs(y) < 0.1:
                    z = "-"
                else:
                    z = math.sin(x * math.pi) * math.sin(y * math.pi)
                yield [x, y, z]

    c = (Surface3D().add(
        "",
        list(surface3d_data()),
        xaxis3d_opts=opts.Axis3DOpts(type_="value"),
        yaxis3d_opts=opts.Axis3DOpts(type_="value"),
        grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100),
    ).set_global_opts(visualmap_opts=opts.VisualMapOpts(
        max_=3, min_=-3, range_color=Faker.visual_color)))
    eq_(c.theme, "white")
    eq_(c.renderer, "canvas")
    c.render()
Esempio n. 6
0
def bar_3d_fun():
    # 三维数据,定义 x、y 长度,z 数值随机
    data = [(i, j, random.randint(1, 20)) for i in range(7) for j in range(10)]
    print(len(data), data)
    Bar3D().add(
        # 添加 x、y、z 轴数据,并设置属性
        series_name="",
        data=data,
        xaxis3d_opts=opts.Axis3DOpts(Faker.choose(), type_="category"),
        yaxis3d_opts=opts.Axis3DOpts(Faker.choose(), type_="category"),
        zaxis3d_opts=opts.Axis3DOpts(Faker.values(), type_="value"),
        # 添加旋转效果
        grid3d_opts=opts.Grid3DOpts(width=100,
                                    depth=100,
                                    rotate_speed=150,
                                    is_rotate=True),
    ).set_global_opts(
        # 设置图表属性
        # 视觉配置
        visualmap_opts=opts.VisualMapOpts(max_=20),
        title_opts=opts.TitleOpts(title="主标题", subtitle="副标题")).render(
            # 设置输出路径
            path="D:/temp/pyecharts_bar3d.html")
Esempio n. 7
0
            yield [x, y, z]



data_xyz = list(surface3d_data())

(

    Surface3D(init_opts=opts.InitOpts(width="1600px", height="800px"))
    .add(
        series_name="",
        shading="color",
        data=list(surface3d_data()),
        xaxis3d_opts=opts.Axis3DOpts(type_="value"),
        yaxis3d_opts=opts.Axis3DOpts(type_="value"),
        grid3d_opts=opts.Grid3DOpts(width=100, height=40, depth=100),
    )
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(
            dimension=2,
            max_=1,
            min_=-1,
            range_color=[
                "#313695",
                "#4575b4",
                "#74add1",
                "#abd9e9",
                "#e0f3f8",
                "#ffffbf",
                "#fee090",
                "#fdae61",
Esempio n. 8
0
]

x_axis = [
    "12am", "1am", "2am", "3am", "4am", "5am", "6am", "7am", "8am", "9am",
    "10am", "11am", "12pm", "1pm", "2pm", "3pm", "4pm", "5pm", "6pm", "7pm",
    "8pm", "9pm", "10pm", "11pm"
]
y_axis = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]

bar3d = (Bar3D().add('',
                     data=data,
                     shading='realistic',
                     xaxis3d_opts=opts.Axis3DOpts(x_axis, type_='category'),
                     yaxis3d_opts=opts.Axis3DOpts(y_axis, type_='category'),
                     zaxis3d_opts=opts.Axis3DOpts(type_='value'),
                     grid3d_opts=opts.Grid3DOpts(
                         width=140, depth=84, is_rotate=True)).set_global_opts(
                             title_opts=opts.TitleOpts('一周不同时间段的骑行需求'),
                             visualmap_opts=opts.VisualMapOpts(
                                 is_show=True,
                                 max_=600,
                                 is_piecewise=False,
                                 range_color=Faker.visual_color)))
bar3d.render()


# 天气维度(不同天气状况)
def set_weather(val):
    if val == 1:
        return 'Good'
    elif val == 2:
        return 'Normal'
    _t = t / 1000
    x = (1 + 0.25 * math.cos(75 * _t)) * math.cos(_t)
    y = (1 + 0.25 * math.cos(75 * _t)) * math.sin(_t)
    z = _t + 2.0 * math.sin(75 * _t)
    data.append([x, y, z])

# In[131]:

c = (
    Line3D().add(
        "",
        data,
        xaxis3d_opts=opts.Axis3DOpts(Faker.clock, type_="value"),
        yaxis3d_opts=opts.Axis3DOpts(Faker.week_en, type_="value"),
        grid3d_opts=opts.Grid3DOpts(width=100,
                                    depth=100,
                                    rotate_speed=150,
                                    is_rotate=True),
    ).set_global_opts(
        visualmap_opts=opts.VisualMapOpts(max_=30,
                                          min_=0,
                                          range_color=Faker.visual_color),
        title_opts=opts.TitleOpts(title="Line3D-旋转的弹簧"),
    )
    #.render("line3d_autorotate.html")
)
c.render_notebook()

# In[137]:

# vis
import pyecharts.options as opts
Esempio n. 10
0
 def to_map_china(self, area, variate, value, update_time):
     # 显示标识栏的颜色分段表示
     pieces = [
         {
             "max": 99999999,
             "min": 10000,
             "label": '>10000',
             "color": '#E64546'
         },
         {
             "max": 9999,
             "min": 1000,
             "label": '1000-9999',
             "color": '#F57567'
         },
         {
             "max": 999,
             "min": 100,
             "label": '100-999',
             "color": '#FF9985'
         },
         {
             "max": 99,
             "min": 10,
             "label": '10-99',
             "color": '#FFC4B3'
         },
         {
             "max": 9,
             "min": 1,
             "label": '1-9',
             "color": '#FFE5DB'
         },
         {
             "max": 0,
             "min": 0,
             "label": '0',
             "color": '#FFFFFF'
         },
     ]
     data_tip = [
         '累计确诊', '死亡', '治愈', '现有确诊', '累计确诊增量', '死亡增量', '治愈增量', '现有确诊增量'
     ]
     data_area = [
         '西藏', '澳门', '青海', '台湾', '香港', '贵州', '吉林', '新疆', '宁夏', '内蒙古', '甘肃',
         '天津', '山西', '辽宁', '黑龙江', '海南', '河北', '陕西', '云南', '广西', '福建', '上海',
         '北京', '江苏', '四川', '山东', '江西', '重庆', '安徽', '湖南', '河南', '广东', '浙江',
         '湖北'
     ]
     # 绘制地图
     map = (
         Map(init_opts=opts.InitOpts(width='800px',
                                     height='600px'))  # 初始化配置项,设置地图大小
         .add("累计确诊人数", [
             list(z) for z in zip(area, variate)
         ], "china").set_global_opts(
             title_opts=opts.TitleOpts(title="中国疫情地图分布",
                                       subtitle='截止%s 中国疫情分布情况' %
                                       (update_time),
                                       pos_left='center',
                                       pos_top='30px'),  #TitleOpts:标题设置
             visualmap_opts=opts.VisualMapOpts(max_=200,
                                               is_piecewise=True,
                                               pieces=pieces),
             # # max_:设置 visualMapPiecewise 所有取值区间中的最大值,is_piecewise设置数据是否连续,split_number设置为分段数,pices可自定义数据分段
         ).render("中国疫情地图.html")  # 展示提取后的效果
     )
     # 绘制地理坐标图
     geo = (
         Geo().add_schema(maptype="china")  #地图类型
         .add(
             "累计确诊人数",
             [list(z) for z in zip(area, variate)],
             type_=ChartType.EFFECT_SCATTER,
         ).set_series_opts(label_opts=opts.LabelOpts(
             is_show=False))  # label_opts:标签配置项设置,is_show:是否显示视觉映射配置
         .set_global_opts(
             title_opts=opts.TitleOpts(title="中国疫情地图分布",
                                       subtitle='截止%s 中国疫情分布情况' %
                                       (update_time),
                                       pos_left='center',
                                       pos_top='30px'),
             visualmap_opts=opts.VisualMapOpts(max_=200,
                                               is_piecewise=True,
                                               pieces=pieces),
         ).render("中国疫情新增情况.html"))
     # 绘制折线图
     line = (
         Line().add_xaxis(area)  #添加x轴数值
         .add_yaxis("累计确诊人数", variate)  #添加y轴名称、数值
         .add_yaxis("累计治愈人数", value).set_global_opts(
             title_opts=opts.TitleOpts(title="国内疫情情况"),
             xaxis_opts=opts.AxisOpts(axislabel_opts={
                 "interval": "0",
                 "rotate": "45"
             }),  #设置x轴数值分割间隔为0,且旋转45°
             yaxis_opts=opts.AxisOpts(
                 type_='log',
                 splitline_opts=opts.SplitLineOpts(is_show=True),
                 is_scale=True,
             )  #设置y轴数据类型为“log”,凸显分割线,不会强制包含零刻度
         ).set_series_opts(label_opts=opts.LabelOpts(is_show=False))  #标签设置项
         .render("全国累计趋势折线图.html"))
     # 绘制柱状图
     bar = (
         Bar().add_xaxis(area).add_yaxis(
             "累计确诊人数", variate,
             stack='stack1')  #若y轴设置项“stack”为同一个值,则显示为堆叠型柱状,反之,成分散型
         # .add_yaxis("累计治愈人数",value,stack='stack2')
         # .add_yaxis("累计死亡人数", value, stack='stack1')
         .add_yaxis("累计治愈人数", value, stack='stack1').set_global_opts(
             title_opts=opts.TitleOpts(title="全国累计确诊治愈情况"),
             xaxis_opts=opts.AxisOpts(axislabel_opts={
                 "interval": "0",
                 "rotate": "45"
             }),
             yaxis_opts=opts.AxisOpts(
                 type_='log',
                 splitline_opts=opts.SplitLineOpts(is_show=True),
                 is_scale=True,
             )).set_series_opts(label_opts=opts.LabelOpts(
                 is_show=False)).render("全国累计确诊治愈.html"))
     # 绘制饼状图
     pie = (
         Pie().add(
             "",
             [list(z) for z in zip(area, variate)],
             radius=["40%", "75%", "log"],  #设置圆环大小及数据类型
         ).set_global_opts(
             title_opts=opts.TitleOpts(title="国内疫情情况"),
             legend_opts=opts.LegendOpts(orient="vertical",
                                         pos_top="15%",
                                         pos_left="2%"),
             #图例配置项:图例列表的布局朝向为水平,图例组件离容器上侧的距离为15%,图例组件离容器左侧的距离为相对于容器高宽的20%
         ).set_series_opts(
             label_opts=opts.LabelOpts(formatter="{b}: {c}"))  #设置标签形式
         .render("全国累计趋势饼状图.html"))
     # 绘制3D柱状图
     bar3d = (
         Bar3D().add("全国指标",
                     data,
                     label_opts=opts.LabelOpts(position='left'),
                     yaxis3d_opts=opts.Axis3DOpts(data_area),
                     xaxis3d_opts=opts.Axis3DOpts(
                         data_tip,
                         type_="category",
                         max_=8,
                         interval=0,
                     ),
                     zaxis3d_opts=opts.Axis3DOpts(type_="value", min_=0),
                     grid3d_opts=opts.Grid3DOpts(width="600",
                                                 height="100",
                                                 is_rotate=True)
                     #设置三维笛卡尔坐标系组件在三维场景中的宽度,高度,以及是否自动旋转
                     ).set_global_opts(
                         visualmap_opts=opts.VisualMapOpts(
                             is_piecewise=True, pieces=pieces),
                         title_opts=opts.TitleOpts(title="疫情指标"),
                     ).render("疫情指标.html"))
Esempio n. 11
0
     bar3d.add("",
               data,
               shading="lambert",
               xaxis3d_opts=opts.Axis3DOpts(data=x_axis,
                                            type_="category",
                                            name="Date",
                                            name_gap=50,
                                            interval=1),
               yaxis3d_opts=opts.Axis3DOpts(data=y_axis,
                                            type_="category",
                                            name="Hours",
                                            name_gap=80,
                                            interval=1),
               zaxis3d_opts=opts.Axis3DOpts(type_="value",
                                            name="Incidence"),
               grid3d_opts=opts.Grid3DOpts(width=100, height=150,
                                           depth=300))
 if n == 0:
     max_v = 2
 elif n == 1:
     max_v = 0.5
 elif n == 2:
     max_v = 20
 elif n == 3:
     max_v = 20
 bar3d.set_global_opts(title_opts=opts.TitleOpts(title=p,
                                                 pos_right='50%',
                                                 pos_top='10%'),
                       visualmap_opts=opts.VisualMapOpts(
                           max_=max_v,
                           range_color=range_color,
                           is_calculable=False,
Esempio n. 12
0
def surface3d_base() -> Surface3D:
    def surface3d_data():
        for t0 in range(-60, 60, 1):
            y = t0 / 60
            for t1 in range(-60, 60, 1):
                x = t1 / 60
                if math.fabs(x) < 0.1 and math.fabs(y) < 0.1:
                    z = "-"
                else:
                    z = math.sin(x * math.pi) * math.sin(y * math.pi)
                yield [x, y, z]

    c = (
        Surface3D()
        .add(
            "",
            list(surface3d_data()),
            xaxis3d_opts=opts.Axis3DOpts(type_="value"),
            yaxis3d_opts=opts.Axis3DOpts(type_="value"),
            grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100),
        )
        .set_global_opts(import math

from example.commons import Faker
from pyecharts import options as opts
from pyecharts.charts import Surface3D

def surface3d_base() -> Surface3D:
    def surface3d_data():
        for t0 in range(-60, 60, 1):
            y = t0 / 60
            for t1 in range(-60, 60, 1):
                x = t1 / 60
                if math.fabs(x) < 0.1 and math.fabs(y) < 0.1:
                    z = "-"
                else:
                    z = math.sin(x * math.pi) * math.sin(y * math.pi)
                yield [x, y, z]

    c = (
        Surface3D()
        .add(
            "",
            list(surface3d_data()),
            xaxis3d_opts=opts.Axis3DOpts(type_="value"),
            yaxis3d_opts=opts.Axis3DOpts(type_="value"),
            grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100),
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Surface3D-基本示例"),
            visualmap_opts=opts.VisualMapOpts(
                max_=3, min_=-3, range_color=Faker.visual_color
            ),
        )
    )
    return c
            title_opts=opts.TitleOpts(title="Surface3D-基本示例"),
            visualmap_opts=opts.VisualMapOpts(
                max_=3, min_=-3, range_color=Faker.visual_color
            ),
        )
    )
Esempio n. 13
0
def plot_performance_overview(dict_results, plot_tymod, p):

    if plot_tymod == "pic":

        figs = {}
        for k, v in dict_results.items():
            v = v.unstack()
            series = v.index.get_level_values(0).unique() if isinstance(
                v.index, pd.MultiIndex) else [k]
            c = 3
            r = np.ceil(len(series) / c)

            fig = plt.figure(figsize=(8, 6))
            plt.subplots_adjust(hspace=0.3)

            for i, _s in enumerate(series):

                _data = v.loc[_s] if isinstance(v.index, pd.MultiIndex) else v

                X, Y = np.meshgrid(_data.index, _data.columns, indexing='ij')

                Z = _data.values
                pos = int(r * 100 + c * 10 + (i + 1))
                ax = fig.add_subplot(pos, projection='3d')

                ax.plot_surface(X, Y, Z, color='b')
                ax.set_title("%s" % _s, fontdict={"size": 8})
            figs[k] = fig
            fig.savefig("%s_%s.png" % (p, k))
        return figs
    elif plot_tymod == 'dyn-3d':
        results = {}
        for k, perf in dict_results.items():
            perf = perf.unstack()
            c = (Surface3D(init_opts=opts.InitOpts(
                width="1000px", height="500px")).set_global_opts(
                    title_opts=opts.TitleOpts(title="绩效-曲面波图(%s)" % k),
                    visualmap_opts=opts.VisualMapOpts(
                        max_=perf.values.max(),
                        min_=perf.values.min(),
                        range_color=Faker.visual_color),
                    toolbox_opts=opts.ToolboxOpts(is_show=True),
                ))
            series = perf.index.get_level_values(0).unique() if isinstance(
                perf.index, pd.MultiIndex) else [k]
            for i, _s in enumerate(series):
                _data = perf.loc[_s] if isinstance(perf.index,
                                                   pd.MultiIndex) else perf
                X, Y = np.meshgrid(_data.index, _data.columns)
                d = list(
                    zip(X.flatten().astype(str),
                        Y.flatten().astype(str),
                        _data.values.T.flatten().astype(np.float)))
                c = c.add(
                    series_name=str(_s),
                    shading="color",
                    data=d,
                    xaxis3d_opts=opts.Axis3DOpts(type_="category"),
                    yaxis3d_opts=opts.Axis3DOpts(type_="category"),
                    grid3d_opts=opts.Grid3DOpts(width=100,
                                                height=50,
                                                depth=100),
                )
            results[k] = c

        tab = Tab()
        for k, v in results.items():
            tab.add(v, k)
        tab.render("%s.html" % p)
    elif plot_tymod == "dyn-hm":
        tab = Tab()
        for k, v in dict_results.items():
            v = v.unstack()
            _tl = _timeline(v, name=k)
            tab.add(_tl, k)
        tab.render("%s.html" % p)
Esempio n. 14
0
def scatter3d_base() -> Scatter3D:
    data = [
        [random.randint(-10000, 10000), random.randint(-10000, 10000), random.randint(-10000, 10000)]
        for _ in range(100)
    ]
    # 求莫比乌斯环数据
    # v_mobius = np.linspace(-1.0, 1.0, num=20, endpoint=True)
    # u_mobius = np.linspace(0, 2 * np.pi, num=20, endpoint=True)
    # x_3d = (1. + v_mobius/2. * np.cos(u_mobius/2.)) * np.cos(u_mobius)
    # print(x_3d)
    # y_3d = (1. + v_mobius/2. * np.cos(u_mobius/2.)) * np.sin(u_mobius)
    # print(y_3d)
    # z_3d = v_mobius/2. * np.sin(v_mobius/2.)
    # print(z_3d)
    # data = [[0, 0, 0], [100, 100, 100], [100, -100, -100]]
    # print(data)
    # data = []
    # temp_list = []
    # for iter_cnt in range(0, len(list(x_3d))):
    #     temp_list.append(x_3d[iter_cnt])
    #     temp_list.append(y_3d[iter_cnt])
    #     temp_list.append(x_3d[iter_cnt])
    #     data.append(temp_list)
    #     temp_list = []
    print(data)
    # data, max_rel = read_as_info('..\\000LocalData\\as_compare\\as_core_map_data_integrate20191203.csv')
    assert isinstance(
        Scatter3D(init_opts=opts.InitOpts(width="1920px", height="960px", page_title="3D散点图", theme=ThemeType.DARK))
        .add("3D散点可视化",
             data,
             grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100, rotate_speed=5, is_rotate=False,
                                         rotate_sensitivity=2),
             xaxis3d_opts=opts.Axis3DOpts(type_="value", name="x", textstyle_opts=opts.TextStyleOpts(color="white")),
             yaxis3d_opts=opts.Axis3DOpts(type_="value", name="y", textstyle_opts=opts.TextStyleOpts(color="white")),
             zaxis3d_opts=opts.Axis3DOpts(type_="value", name="z", textstyle_opts=opts.TextStyleOpts(color="white")),
             itemstyle_opts=opts.ItemStyleOpts(color="white", border_width=0.01, border_color="red", area_color="blue"),
             # label_opts=opts.LabelOpts(color="objectwhite")

             )
        .set_global_opts, )
    c = (
        Scatter3D(init_opts=opts.InitOpts(width="1920px", height="960px", page_title="3D散点图", theme=ThemeType.DARK))
        .add("3D散点可视化",
             data,
             grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100, rotate_speed=5, is_rotate=False, rotate_sensitivity=2),
             xaxis3d_opts=opts.Axis3DOpts(type_="value", name="x", textstyle_opts=opts.TextStyleOpts(color="white")),
             yaxis3d_opts=opts.Axis3DOpts(type_="value", name="y", textstyle_opts=opts.TextStyleOpts(color="white")),
             zaxis3d_opts=opts.Axis3DOpts(type_="value", name="z", textstyle_opts=opts.TextStyleOpts(color="white")),
             itemstyle_opts=opts.ItemStyleOpts(color="white", border_width=0.01, border_color="red", area_color="blue"),

             # label_opts=opts.LabelOpts(color="white")

             )
        .set_global_opts(
            title_opts=opts.TitleOpts("3D散点图"),
            # visualmap_opts=opts.VisualMapOpts(range_color=Faker.visual_color),

        )
    )
    print(data)
    print(Faker.visual_color)
    return c