• R语言软件
  • 文章推荐:echarts4r: 从入门到应用【袁凡】

Cloud2016
不用 tooltip,改成增加 label 也行,如下:

quakes |>
  e_charts(x = long) |>
  e_geo(roam = TRUE,
        map = "world",
        boundingCoords = list(c(165.67,-38.59),
                              c(188.13,-10.72))) |>
  e_scatter(
    serie = lat,
    scale = NULL,
    size = mag,
    bind = label, #params.name
    name = "地震点",
    coord_system = "geo"
  )|>
  e_labels(
    position = 'top',
    formatter = htmlwidgets::JS("function(params){
        return( params.name )}")
  )

    yuanfan 这个事看起来还挺复杂的,理想态是类似 ggplot2 的标签图层,或者 ggrepel 那样,可以另起一个数据,添加文本注释图层。

    set.seed(2020)
    library(ggplot2)
    library(ggrepel)
    dat <- data.frame(
      x = seq(100),
      y = cumsum(rnorm(100))
    )
    anno_data <- dat |> 
      subset(x %% 25 == 10)  |> 
      transform(text = "text")
    
    ggplot(data = dat, aes(x, y)) +
      geom_line() +
      geom_label_repel(aes(label = text), # 有另一份数据,新加一个图层
        data = anno_data,
        direction = "y",
        nudge_y = c(-5, 5, 5, 5)
      ) +
      theme_minimal()

    P.S. 汤加火山位置我应该给 c(-21.0744, 183.7499) 毕竟西经 176 就是东经 184, 这样就和 quakes 数据集保持一样了。

    # 从本地加载新的正确的中国地图数据
    > china_map <- jsonlite::read_json("中华人民共和国.json")
    > china_map <- jsonlite::read_json("https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json")
    > # 开始绘图
    > df |>
    +     e_charts(region) |>
    +     # 注册地图
    +     e_map_register("China2", china_map) |>
    +     # 调用注册的地图
    +     em_map("China2") |>
    +     # 将数据映射到地图上
    +     e_map(value, map = "China2") |>
    +     e_visual_map(value)
    Error in readBin(3L, raw(0), 32768L) : 
      can only read from a binary connection

      lxg 没有复现你的问题,需要提供更多关于运行环境的信息,请贴出

      xfun::session_info(c('blogdown', 'rmarkdown', 'echarts4r', 'jsonlite'))

      的运行结果

      文章很好,不过我有一个问题:中国地图关于九段线及南海诸岛放置的问题。一般在画中国地图的时候往往会把九段线和南海诸岛绘制一张缩略图放在右下角,但是用高德地图数据的时候,不能直接做到这一点,不知道有没有其他方法?

        curiosity 我们也找了,没找到这样的开放的可供免费下载的来自权威官方网站的矢量地图数据。阿里、百度等大厂内部的、对外的数据可视化和 BI 工具产品里面有,以订阅收费的服务方式在公有或私有云上部署。

          Cloud2016 有一个粗略的想法,因为九段线和南海诸岛的缩略图实际上可以看成另一张图。那么大图去掉九段线的坐标,画一张图,然后加上九段线等再单独作图,然后截取合适的部分,再将两张图片叠加在一起。

            2 个月 后
            6 天 后
            7 天 后
            1 个月 后

            请问echarts4r自带的图片下载功能,可以设置高分辨率的下载吗?

            9 个月 后

            啊,隔了一年多再看这篇文章,真得好多细节都不完善呐。

            在第3.5.5小节中调用的“China2”地图,其实是在3.5.2节中通过 e_map_register 函数注册好的,所以后面直接用了。如果第3.5.5小节独立写的话,应如下:

            library(echarts4r)
            
            china_map <- jsonlite::read_json("https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json")
            
            df <- data.frame(
              lat = c(39.9109, 31.2359, 22.5484),
              lon = c(116.4133, 121.4805, 114.0645),
              city = c("北京",  "上海", "深圳"),
              value = c(10, 20, 30)
            )
            
            df |>
                e_charts(lon) |>
                e_map_register("China2", china_map) |>
                e_geo(map = "China2") |>
                e_scatter(lat, value, coord_system = "geo", scale = NULL)
            2 年 后

            又是我的网速问题么?怎么很多图都看不到了。

              Claireasstronaut

              哇,你做得好好啊。这就是我一直以来想做的事啊(PS想把收集过的数据从各篇分散的博客统一整理到一个 shiny 入口,分类展示),不知道你会不会写一篇文章讲讲这是怎么做的?投搞到 COS 的话对我们这些想学 shiny 但不会的菜鸟会有很大帮助的。

                Claireasstronaut

                虽然俺平时为人一贯温和,不喜欢给别人压力,不过咧(装腔拿调中……),咳,你说的啊,我可等着哩。