Echarts 3D散点图

这篇具有很好参考价值的文章主要介绍了Echarts 3D散点图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 以下是一个 html + echarts的案例
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts 3D Scatter Plot Demo</title>
    <!-- 引入 ECharts -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.9.0/echarts.min.js"></script>
</head>
<body>
    <!-- 绘制 3D 散点图的容器 -->
    <div id="scatter-chart" style="width: 720px; height: 480px;"></div>

    <script>
        // 3D 散点图的数据格式,包含三个维度坐标信息和额外的数据
        var data = [
            [10, 20, 30, 'data1'],
            [20, 40, 10, 'data2'],
            [30, 60, 20, 'data3'],
            [40, 80, 40, 'data4'],
            [50, 100, 30, 'data5'],
            [60, 120, 50, 'data6']
        ];

        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('scatter-chart'));

        // 绘制3D散点图
        myChart.setOption({
            // 图表标题
            title: {
                text: 'ECharts 3D Scatter Plot Demo'
            },
            // 图表类型,3D散点图
            series: [{
                type: 'scatter3D',
                // 数据
                data: data,
                // 点大小
                symbolSize: 20,
                // 控制点的透明度
                itemStyle: {
                    opacity: 0.8
                }
            }],
            // X轴的3D坐标系,相关设置
            xAxis3D: {
                type: 'value',
                scale: true
            },
            // Y轴的3D坐标系,相关设置
            yAxis3D: {
                type: 'value',
                scale: true
            },
            // Z轴的3D坐标系,相关设置
            zAxis3D: {
                type: 'value',
                scale: true
            },
            // 旋转3D图表
            grid3D: {
                viewControl: {
                    // 摄像机视角
                    alpha: 45,
                    beta: 30
                }
            }
        });
    </script>
</body>
</html>

  1. 以下是一个 vue+echarts 的案例
  • index.vue
<!--
 * @Description: file content
 * @Version: 2.0
 * @Autor: Hu Kang
 * @Date: 2023-04-04 18:49:29
 * @LastEditors: Hu Kang
 * @LastEditTime: 2023-05-10 15:24:28
 * @FilePath: \src\views\page\echarts\index.vue
-->
<template>
  <div class="content">
  <template #title> <icon-home /> 散点图</template>
            <div>
              <input type="file" id="inputfile" />
              <button @click="readFile()">读取文件</button>
            </div>
            <splashes v-if="activeKey === '7'" :chart-data="chartData" />
  </div>
</template>

<script setup lang="ts">
import {
  ref,
  reactive,
  watch,
  watchEffect,
  computed,
  getCurrentInstance,
  nextTick,
  defineComponent,
  toRefs,
} from 'vue';
import splashes from './components/splashes.vue';

const chartData = ref()
function readFile() {
  var file = document.getElementById('inputfile').files[0]; // 获取选择的文件
  if (!file) return;

  var reader = new FileReader();
  reader.readAsText(file, 'UTF-8'); // 以文本格式读取文件
  reader.onload = function (event) {
    // 取到的文件内容
    chartData.value = JSON.parse(event.target.result);
  }
}
</script>

<style scoped lang="less">
.box-card-component {
  padding: 0px 20px;

  .card-header {
    color: #409eff;
    font-weight: bold;
    display: flex;
    justify-content: space-between;
    // height: 20px;
  }
}
</style>
  • splashes.vue
<!--
 * @Description: file content
 * @Version: 2.0
 * @Autor: Hu Kang
 * @Date: 2023-05-09 16:34:49
 * @LastEditors: Hu Kang
 * @LastEditTime: 2023-05-10 15:08:35
 * @FilePath: \src\views\page\echarts\components\splashes.vue
-->

<template>
  <div ref="echartsRef" class="content" id="my-div"> </div>
</template>

<script setup lang="ts">
import {
  ref,
  reactive,
  watch,
  watchEffect,
  computed,
  getCurrentInstance,
  nextTick,
  defineComponent,
  toRefs,
  onMounted,
} from 'vue';
import * as echarts from 'echarts';
import 'echarts-gl'
import { RequestType } from 'cesium';

const props = defineProps({
  // 数据 chart-data
  chartData: {
    type: Object,
    require: true,
    default: () => {
      return {}
    }
  },
  width: {
    type: String,
    default: '98%'
  },
  height: {
    type: String,
    default: '67vh'
  },
  autoResize: {
    type: Boolean,
    default: true
  }
})
const { chartData } = toRefs(props)

// 3D 散点图的数据格式,包含三个维度坐标信息和额外的数据
var data = [
  [10, 20, 30, 'data1'],
  [20, 40, 10, 'data2'],
  [30, 60, 20, 'data3'],
  [40, 80, 40, 'data4'],
  [50, 100, 30, 'data5'],
  [60, 120, 50, 'data6']
];

var sizeValue = '57%';
var symbolSize = 2.5;
const echartsData = reactive({
  option: {
    // 图表标题
    title: {
      text: 'ECharts 3D Scatter Plot Demo',
      subtext: '3D散点图绘制情况',
      left: 'center'
    },
    // 图表类型,3D散点图
    series: [{
      type: 'scatter3D',
      // 数据
      data: data,
      // 点大小
      symbolSize: 10,
      // 控制点的透明度
      itemStyle: {
        opacity: 0.8
      }
    },
    {
      type: 'scatter',
      symbolSize: symbolSize,
      xAxisIndex: 0,
      yAxisIndex: 0,
      encode: {
        x: 'Income',
        y: 'Life Expectancy',
        tooltip: [0, 1, 2, 3, 4]
      }
    },
    {
      type: 'scatter',
      symbolSize: symbolSize,
      xAxisIndex: 1,
      yAxisIndex: 1,
      encode: {
        x: 'Country',
        y: 'Income',
        tooltip: [0, 1, 2, 3, 4]
      }
    },
    {
      type: 'scatter',
      symbolSize: symbolSize,
      xAxisIndex: 2,
      yAxisIndex: 2,
      encode: {
        x: 'Income',
        y: 'Population',
        tooltip: [0, 1, 2, 3, 4]
      }
    },
    {
      type: 'scatter',
      symbolSize: symbolSize,
      xAxisIndex: 3,
      yAxisIndex: 3,
      encode: {
        x: 'Life Expectancy',
        y: 'Population',
        tooltip: [0, 1, 2, 3, 4]
      }
    }],
    // X轴的3D坐标系,相关设置
    xAxis3D: {
      type: 'value',
      scale: true
    },
    // Y轴的3D坐标系,相关设置
    yAxis3D: {
      type: 'value',
      scale: true
    },
    // Z轴的3D坐标系,相关设置
    zAxis3D: {
      type: 'value',
      scale: true
    },
    // 旋转3D图表
    grid3D: {
      viewControl: {
        // 摄像机视角
        alpha: 45,
        beta: 30
      }
    },
    grid: [
      { left: '2%', width: '20%', bottom: sizeValue },
      { left: '80%', width: '20%', bottom: sizeValue },
      { left: '2%', width: '20%', top: sizeValue },
      { left: '80%', width: '20%', top: sizeValue }
    ],
    xAxis: [
      {
        type: 'value',
        gridIndex: 0,
        name: 'Income',
        axisLabel: { rotate: 50, interval: 0 }
      },
      {
        type: 'category',
        gridIndex: 1,
        name: 'Country',
        boundaryGap: false,
        axisLabel: { rotate: 50, interval: 0 }
      },
      {
        type: 'value',
        gridIndex: 2,
        name: 'Income',
        axisLabel: { rotate: 50, interval: 0 }
      },
      {
        type: 'value',
        gridIndex: 3,
        name: 'Life Expectancy',
        axisLabel: { rotate: 50, interval: 0 }
      }
    ],
    yAxis: [
      { type: 'value', gridIndex: 0, name: 'Life Expectancy' },
      { type: 'value', gridIndex: 1, name: 'Income' },
      { type: 'value', gridIndex: 2, name: 'Population' },
      { type: 'value', gridIndex: 3, name: 'Population' }
    ],
    dataset: {
      dimensions: [
        'Income',
        'Life Expectancy',
        'Population',
        'Country',
        { name: 'Year', type: 'ordinal' }
      ],
      source: []
    },

  }
})
const { option } = toRefs(echartsData);
const echartsRef = ref<string>();
let echartInstance;


watch(
  chartData,
  (newValue) => {
    if (newValue && newValue.data?.length) {
      option.value.dataset.source = newValue.data
    }

  },
  { deep: true, immediate: true }
)

watch(
  option,
  (newValue) => {
    echartInstance.setOption(newValue);
  },
  { deep: true }
)

onMounted(() => {
  echartInstance = echarts.init(echartsRef.value, 'macarons', { renderer: 'webgl' });
  echartInstance.setOption(option.value);
});
</script>

<style lang="less" scoped>
.content {
  width: 100%;
  height: 90vh;
}
</style>

  • 使用前需要先安装一下依赖
    npm install echarts-gl --saveyarn add echarts-gl

  • 安装完成后,在代码中引入 echarts-gl 包:

    import echarts from 'echarts';
    import 'echarts-gl';
    
  • 接下来,你就可以在代码中使用 scatter3D 组件了,具体的使用方法可以参考官方文档。

控制台如果有提示: geo3D exists,是因为你的版本太低了,可以升级一下
Echarts 3D散点图

  • 升级
    npm update echarts-glyarn upgrade echarts-gl

  • 如果你是通过 CDN 引入 echarts 和 echarts-gl,可以尝试使用最新的链接,如:

    <script src="https://cdn.jsdelivr.net/npm/echarts@latest/dist/echarts.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/echarts-gl@latest/dist/echarts-gl.min.js"></script>
    
  • 如果以上方法无效,你还可以尝试手动清空浏览器缓存并重新加载页面,或者删除旧版本 echarts-gl,重新安装最新版本。文章来源地址https://www.toymoban.com/news/detail-454173.html

到了这里,关于Echarts 3D散点图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

领支付宝红包 赞助服务器费用

相关文章

  • echarts的series——折线图,饼图,柱状图,散点图的配置

    🙂博主:小猫娃来啦 🙂文章核心: echarts的series——折线图,饼图,柱状图,散点图的配置 Echarts是一款基于JavaScript的开源可视化图表库,它具有以下优点: 1. 易于使用 : Echarts提供了丰富的图表类型和各种交互方式,用户可以通过简单的配置和API调用来创建各种复杂的图

    2024年02月01日
    浏览(59)
  • Pyecharts绘制3D散点图:把一个图做精细,就能学到好多啦

    版本:2.0.4 官方文档:pyecharts - A Python Echarts Plotting Library built with love.  在如下的设置中,X轴(width)和Y轴(depth)长度相同,Z轴要略矮一点 方法一: 可以将每个样本点的数据设置为4维,前3个维度对应X-Y-Z坐标,第4个维度对应类别,然后通过全局配置项中的视觉映射配置项,t

    2024年01月16日
    浏览(42)
  • 522个matplotlib绘图案例,包含:折线图、散点图、条形图、饼图、直方图、3D图等,源码可直接运行!

    Matplotlib 是一个广泛使用的 Python 绘图库,可以用于生成各种类型的图表和可视化。它提供了丰富的功能和灵活的接口,使用户可以轻松地创建精美的图表。下面将介绍一些常见的Matplotlib图表类型。 折线图(Line Plot) 折线图是 Matplotlib 中最常见的图表类型之一。它用于显示数

    2024年02月15日
    浏览(39)
  • echarts实现一个3d效果柱形图

    思路是: 通过数组循环生成多个echarts实例盒子,生成的柱形图只有一条数据,是由多个图表设置 barGap: \\\'-100%\\\' 实现重叠,并通过设置柱形图中间颜色到边上颜色的渐变形成类似3d的视觉效果,实际每一个柱形图是由以下几个图表实现的:⛽️ 内层背景的body(bar) 内层背景的

    2024年02月15日
    浏览(44)
  • 【Python】Vscode使用pyecharts 3D散点图实现数据可视化

    目录 前言: 一:3D散点图效果图展示: 二.pyecharts是什么? 三.什么是3D散点图 四.环境准备 1.Vscaode下载扩展包: 2.安装pyechart库 五.3D散点图代码实现 1.导库和导包 2.导入数据(使用的是航空公司数据)  3.剔除年龄缺失值: 4.数据筛选 5.添加参数 6.实现效果图  7.修改参数实

    2024年02月07日
    浏览(49)
  • 【Python百日进阶-数据分析】Day325 - plotly.express.scatter_3d():3D散点图

    data_frame ( DataFrame or array-like or dict ) – 这个参数需要传递给要使用的列名(而不是名)。Array-like 和 dict 在内部转换为 Pandas DataFrame。可选:如果丢失,则使用其他参数在幕后构造一个 DataFrame。 x ( str or int or Series or array-like ) – 中列的名称data_frame,或pandas Series或arra

    2024年02月04日
    浏览(46)
  • 【Python数据可视化】通过Python制作 “3D散点图“ 和 “气泡图“

    前言 一、制作3D散点图 1、3D散点图的特点 2、导入数据 3.数据筛选  4.生成3D散点图  二、制作气泡图 1.气泡图的特点 2.导入数据  3.数据筛选  4.生成气泡图 总结 在对数据进行分析的时候,经常需要将数据进行可视化,以方便我们对数据的认识和理解,所以接下来是对 \\\"3D散

    2024年02月07日
    浏览(39)
  • 如何在echarts的3d地球上以任意一个坐标点为圆心画一个标准的圆形(附代码)

    这是我用echarts做前端开发遇到的问题,似乎echarts没有提供在3d地球坐标面上画圆的方法。  而我的需求是要在地球上画出一个卫星通信的覆盖范围的圆形区域。  (效果展示) 最开始的时候我用网上的公式将经纬度乘系数转化为千米之后直接计算采样半径,然后在圆周中采

    2024年02月03日
    浏览(36)
  • 数据可视化——用python绘制气泡图、三维散点图、多重柱形图案例

    目录 前言 一、气泡图的绘制 1、什么是气泡图?他适用于什么数据? 2、图形效果展示 3、导入需要用到的库 4、读取要分析的数据 5、检查数据是否有问题 6、将要对比数据提取出来 7、画图 二、三维散点图的绘制 1、什么是三维散点图? 2、导入需要用到的数据库 3、画图 三

    2024年02月06日
    浏览(59)
  • R语言使用rgl包的plot3d函数可视化3D散点图、使用type参数指定可视化的类型

    目录 R语言使用rgl包的plot3d函数可视化3D散点图、使用type参数指定可视化的类型 仿真数据

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包