G2-- 2 面积图 并为提示添加单位

本文介绍如何使用AntV G2库在JavaScript中创建动态的销售数据折线图和面积图,通过时间轴展示24小时内的数据变化,包括数据配置、坐标轴定制和交互式tooltip。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

代码可直接在官网里运行

import { Chart } from '@antv/g2';

    const data = [
      {
        Data: '2021-07-24 8:00',
        sales: 57
      },
      {
        Data: '2021-07-24 12:00',
        sales: 55
      },
      {
        Data: '2021-07-24 16:00',
        sales: 60
      },
      {
        Data: '2021-07-24 20:00',
        sales: 54
      },
      {
        Data: '2021-07-24 24:00',
        sales: 57
      },
      {
        Data: '2021-07-25 4:00',
        sales: 56
      },
      {
        Data: '2021-07-25 8:00',
        sales: 62
      },
      {
        Data: '2021-07-25 12:00',
        sales: 60
      },
      {
        Data: '2021-07-25 16:00',
        sales: 55
      },
      {
        Data: '2021-07-25 20:00',
        sales: 58
      },
      {
        Data: '2021-07-25 24:00',
        sales: 60
      },
      {
        Data: '2021-07-26 4:00',
        sales: 57
      },
      {
        Data: '2021-07-26 8:00',
        sales: 55
      },
      {
        Data: '2021-07-26 12:00',
        sales: 57
      },
      {
        Data: '2021-07-26 16:00',
        sales: 58
      },
      {
        Data: '2021-07-26 20:00',
        sales: 60
      },
      {
        Data: '2021-07-26 24:00',
        sales: 57
      }
    ];
    const chart = new Chart({
      container: 'container',
      autoFit: true,
      height: 500,
      padding: [100, 100, 100, 100]
    });
    chart.data(data);
    chart.scale('Data', {
      range: [0, 1],
      tickCount: 10,
      type: 'timeCat'
    });
    chart.scale('sales', {
      nice: true,
      min: 40,
      alias: '当前水位',
    });

    chart.axis('sales', {
      label: {
        formatter: text => {
          return text.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') + ' m';
        }
      }
    });
    chart.tooltip({
      showCrosshairs: true,
    });

    chart.line().position('Data*sales');
    chart.area().position('Data*sales').tooltip('Data*sales', (Data: any, sales: any) => {
      return {
        name: Data,
        value: sales + 'm',
      };
    });
    chart.render();

library(sf) library(ggplot2) library(dplyr) # 添加dplyr包用于数据合并 library(ggspatial) # 新增指北针依赖包 library(xlsx) # 读取Excel文件 # 读取地理数据 #china_data <- st_read("C:/Users/DELL/Desktop/RMap/China/ChinaSheng.geojson") china_data <- st_read("C:/Users/DELL/Desktop/RMap/China/China1.geo.json") # 数据读取与预处理 ---------------------------------------------------------- # 从Excel读取数据(注意修改文件路径) workbook <- "C:/Users/DELL/Desktop/RXlsx/Map/G2Map.xlsx" excelMap <- read.xlsx(workbook, 1) # 读取第一个工作表 head(excelMap) # 查看地理数据中的省份名称(关键步骤:确认名称匹配) #unique(china_data$name) # 假设地理数据中"name"列存储省份名称 # 创建示例数据(确保名称与地理数据完全一致) province_data <- data.frame( Province=excelMap$Province1, #aGraph=excelMap$aGraph dGraph=excelMap$dGraph )%>% na.omit() # 删除包含缺失值的行 province_data # 合并地理数据与属性数据 merged_data <- china_data %>% left_join(province_data, by = c("fullname" = "Province")) # 按省份名称匹配 merged_data # 创建分级填色地图 mainplot <- ggplot( #data = province_data ) + # 绘制地理要素并用value值填充颜色 geom_sf( data = merged_data, aes(fill = dGraph) ) + # 设置颜色渐变(浅蓝到深蓝) scale_fill_gradient( name = "指标值", # 图例标题 low = "#FFA54F", # 最小值颜色 high = "#CD661D", # 最大值颜色 na.value = "gray90" # 无数据地区颜色 ) + # 添加标题和调整样式 labs(title = "中国各省指标分布图") + theme_void() + # 使用空白主题(移除坐标轴等) theme( plot.title = element_text(hjust = 0.5, size = 16), # 标题居中 legend.position = "right" # 图例位置 ) print(mainplot) 以上代码出现警告:1: In CPL_read_ogr(dsn, layer, query, as.character(options), ... : GDAL Message 1: Non closed ring detected. To avoid accepting it, set the OGR_GEOMETRY_ACCEPT_UNCLOSED_RING configuration option to NO 2: In CPL_read_ogr(dsn, layer, query, as.character(options), ... : GDAL Message 1: Non closed ring detected. To avoid accepting it, set the OGR_GEOMETRY_ACCEPT_UNCLOSED_RING configuration option to NO 共50个,分析原因并解决
04-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值