热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

svgpath绘制心形_如何使用R语言绘制水球图?

echarts4r包封装EchartsJavascript图表库,这使得我们可以使用R语言绘制各种基于echarts.js的交互式图表,今天我给大家分享
b3fbf7258153f81dd4c1ceef2809f06c.png

echarts4r 包封装 Echarts Javascript 图表库,这使得我们可以使用 R 语言绘制各种基于 echarts.js 的交互式图表,今天我给大家分享的是水球图的绘制方法。

首先加载我们需要的 R 包:

library(echarts4r)
library(tidyverse)

我从 https://www.iconfont.cn 网站上下载了两个 SVG 图片,一个是 Apple 的 logo 一个是 Android 的 logo,可以使用文本编辑器查看他们的源代码,然后从其中找到 path://...:

path1 "path://M662.384539 156.783881c38.396052-41.595723 63.993421-99.189802 57.594078-156.783881-54.394408 3.199671-121.587499 31.99671-163.183223 73.592434-35.196381 35.196381-67.193092 95.990131-57.594078 150.384538 60.79375 6.399342 124.78717-25.597368 163.183223-67.193091z m118.387828 393.559537c0-127.986841 102.389473-188.780591 105.589144-191.980262-57.594079-86.391118-147.184868-99.189802-179.181578-99.189802-76.792105-9.599013-150.384539 44.795394-188.780591 44.795394s-99.189802-44.795394-163.183223-44.795394c-83.191447 0-159.983552 51.194737-201.579275 127.986841-86.391118 153.58421-22.397697 383.960524 60.79375 508.747694 41.595723 60.79375 89.590789 131.186512 153.584209 127.986842 60.79375-3.199671 86.391118-41.595723 159.983552-41.595724S623.988486 1023.894731 691.181578 1023.894731s108.788815-63.993421 150.384538-124.78717c47.995066-70.392763 67.193092-140.785525 67.193092-143.985197 0 0-127.986841-51.194737-127.986841-204.778946z"
path2 "path://M204.8 395.2v265.6c0 35.2-28.8 64-64 64s-67.2-28.8-67.2-64V395.2c0-35.2 35.2-64 67.2-64 35.2 3.2 64 28.8 64 64zM230.4 752c0 38.4 28.8 67.2 67.2 67.2h44.8V960c0 83.2 124.8 83.2 124.8 0v-140.8h86.4V960c0 83.2 128 83.2 128 0v-140.8h44.8c38.4 0 67.2-28.8 67.2-67.2V344H230.4V752z m566.4-430.4H227.2c0-99.2 57.6-182.4 144-227.2l-44.8-80c-6.4-9.6 9.6-19.2 16-9.6l44.8 80c80-35.2 172.8-32 246.4 0l44.8-80c6.4-9.6 22.4-3.2 16 9.6l-44.8 80c89.6 44.8 147.2 131.2 147.2 227.2z m-390.4-124.8c0-12.8-9.6-22.4-22.4-22.4-12.8 0-22.4 9.6-22.4 22.4 0 12.8 9.6 22.4 22.4 22.4 12.8 0 22.4-9.6 22.4-22.4z m259.2 0c0-12.8-9.6-22.4-22.4-22.4s-22.4 9.6-22.4 22.4c0 12.8 9.6 22.4 22.4 22.4 12.8 0 22.4-9.6 22.4-22.4z m217.6 137.6c-35.2 0-64 28.8-64 64v265.6c0 35.2 28.8 64 64 64s67.2-28.8 67.2-64V398.4c0-38.4-35.2-64-67.2-64z"

下面我们创建一个数据框:

df   column = c("Apple", "Android"), value = c(65, 35),
  path = c(path1, path2)
)
df

#> # A tibble: 2 x 3
#>   column  value path                                                            
#>                                                                  
#> 1 Apple      65 path://M662.384539 156.783881c38.396052-41.595723 63.993421-99.…
#> 2 Android    35 path://M204.8 395.2v265.6c0 35.2-28.8 64-64 64s-67.2-28.8-67.2-…

然后就可以绘制水球图了:

df %>%
  e_charts(column, width = "100%") %>%
  e_x_axis(
    splitLine = list(show = FALSE),
    axisTick = list(show = FALSE),
    axisLine = list(show = FALSE),
    axisLabel = list(show = FALSE)
  ) %>%
  e_y_axis(
    max = 100,
    splitLine = list(show = FALSE),
    axisTick = list(show = FALSE),
    axisLine = list(show = FALSE),
    axisLabel = list(show = FALSE)
  ) %>%
  e_color(color = c("#69cce6", "#eee")) %>%
  e_pictorial(value,
    symbol = path, z = 10, name = "realValue",
    symbolBoundingData = 100, symbolClip = TRUE
  ) %>%
  e_pictorial(value,
    symbol = path, name = "background",
    symbolBoundingData = 100, 
  ) %>%
  e_labels(
    position = "bottom", offset = c(0, 10),
    textStyle = list(
      fontSize = 20, fontFamily = "Arial",
      fontWeight = "bold",
      color = "#69cce6"
    ),
    formatter = "{@[1]}% {@[0]}"
  ) %>%
  e_legend(show = FALSE) %>%
  e_theme("westeros")

ee141211fed6c19969f82b7089c55cfa.png

还可以让容器里面的水波动起来。另外 echarts4r 包提供了组合多个 echarts 图表控件的函数:

library(htmlwidgets)
liquid 0.6, 0.5, 0.4), 
                 android = c(0.5, 0.3, 0.1))
liquid %>%
  e_charts() %>%
  e_liquid(apple, shape = path1, 
           backgroundStyle = list(borderColor = '#156ACF',
                                  borderWidth = 1,
                                  shadowColor = 'rgba(0, 0, 0, 0.4)',
                                  shadowBlur = 20),
           outline = list(show = FALSE),
           label = list(position = c('50%', '50%'),
                        formatter = JS("function(){return '苹果';}"),
                        fontSize = 20,
                        color = '#D94854')) -> e1
liquid %>%
  e_charts() %>%
  e_liquid(android, shape = path2, 
           backgroundStyle = list(borderColor = '#156ACF',
                                  borderWidth = 1,
                                  shadowColor = 'rgba(0, 0, 0, 0.4)',
                                  shadowBlur = 20),
           outline = list(show = FALSE),
           label = list(position = c('50%', '50%'),
                        formatter = JS("function(){return '安卓';}"),
                        fontSize = 20,
                        color = '#D94854')) -> e2
e_arrange(e1, e2, rows = 1, cols = 2)

762d0bd488e1aeaa51162bf57281b1ae.png

使用 manipulateWidget 包合并效果更好:

library(manipulateWidget)
combineWidgets(e1, e2, byrow = TRUE, nrow = 1, 
               width = "100%", height = "400px")

363e018843473bbc6346d1f04ed4813d.png

是不是很炫酷!

代码和相关材料获取

在公众号后台发送 liquid 即可获取~

? 线上培训班体验邀请

欢迎加入我的线上培训班学习使用 R 和 Stata 进行数据处理和可视化:你想学习使用 R & Stata 进行数据分析与可视化么?我觉得你可以加入我的线上培训班试试!

之后的课程将不再通过哔哩哔哩直播进行,那么该如何试听我的培训班的课程呢?很简单:

  1. 关注本公众号 RStata,这样你能够第一时间获取课程预告和我提供的学习资源;
  2. 转发本文至朋友圈集齐 12 个赞;
  3. 截图发给我,我就邀请你加入会员群进行体验(两天),期间你可以参与腾讯会议观看课程直播和进行提问。

我的微信

更多内容欢迎加入我的线上培训班获取,详情可添加我的微信咨询了解:

328c28f62e615fee3d3207b4aec11308.png

非诚勿扰。

推荐阅读

  • 【Stata 编程导论】第三讲:函数、宏、标量和矩阵(二)
  • 函数、宏、标量和矩阵(一)
  • 【使用 R 语言进行地理计算】第二讲:属性数据操作
  • 为小白准备的课程~ 《Stata 绘图指引》系列课程第二讲:Stata 的图形编辑器
  • 指北针和比例尺来啦!使用 Stata 绘制中国市级地图~还带九段线小地图
  • 《R 数据科学》系列课程第二讲:使用 ggplot2 进行数据可视化
  • 上手 Stata 图表制作
  • 入手 R 语言!
  • 入手 Stata
  • Stata 网络数据爬取:JSON 篇
  • 使用 R 语言从 PDF 文档中提取表格
  • 如何根据经纬度判断该地点所处的省份或者区县?(更新版)
  • 如何在几秒钟内完成 Stata 外部命令的安装?
  • 中国的工业企业都在哪里?—— Stata、高德接口与地理编码



推荐阅读
author-avatar
快乐俱乐部老巢_260
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有