热门标签 | 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、高德接口与地理编码



推荐阅读
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • [论文笔记] Crowdsourcing Translation: Professional Quality from Non-Professionals (ACL, 2011)
    Time:4hoursTimespan:Apr15–May3,2012OmarZaidan,ChrisCallison-Burch:CrowdsourcingTra ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 程序员妻子吐槽:丈夫北漂8年终薪3万,存款情况令人意外
    一位程序员的妻子在网上分享了她丈夫在北京工作八年的经历,月薪仅3万元,存款情况却出乎意料。本文探讨了高学历人才在大城市的职场现状及生活压力。 ... [详细]
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
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社区 版权所有