lisp语言画阿基米德线_网易痛经图水球图怎么画的?对不起,有了R真的可以为所欲为...

非常抱歉,因为开始上班了,更新的比较少,偶尔冒个泡画些沙雕图哈哈哈。今天我们来看下如何用R语言缓解痛经。哦不,是用R语言来做数据可视化!

如何画你想要的任意水球图

之前看到个小伙伴问这个图怎么画的,用 echarts4r 就行。

1040fa9d772dbf6078736a6a29a5df96.png

拆解下步骤,这种图基于 svg 图,去哪找 svg 呢,推荐一个网站 https://iconmonstr.com/collections/841c7657de61da29dc932a57e773f13c.png然后点击下载一个 svg 比如这个 apple 的eb50c431bd758a6b73cb7c56fe1d8b56.png下载完之后用 sublime 或者其他编辑器打开,复制 svg 的路径c4ae1edf32eb35c3b19538bd0b774458.png复制到 path1,path2 处就可以了,当然你也可以传多个 path。剩下就是绘图了,用了 echarts4r 这个包,它也支持管道操作,所以非常丝滑。

df = data.frame(column=c("first", "second"), value=c(65, 35),
path = c('path://path1','path://path2'))

构造好数据后直接传到 echarts4r 就行了。

library(echarts4r)

df %>%
e_charts(column) %>%
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")

关于每个函数是干啥的,可在 library(echarts4r)之后用?函数名查询。你想绘制自己的水球图,找到对应图的 svg 路径复用上就好。

21b81a178b7e3a76a9ab9ddccbaec5ac.png

网易痛经图?看完这个教程就不再痛了

a0bfede7cdddc766b5129babb857f13e.png

这个图是网易数读一篇描写女生痛经时,最常用的止痛方法。对话题本身感兴趣的可移步网易数读看下原文。我们用 ggplot 来画一下这个沙雕图。

library(ggplot2)
library(dplyr)
library(plothelper)
# 生成文本
test='红糖 止痛药 中药 运动 医生 医院 中医 热水 治疗 布洛芬 保暖 吃药 调理 红枣 针灸 泡脚'
# 弄成list
text=unlist(strsplit(test,' '))
# 生成圈圈
dat=data.frame(x=seq(0.5,16,length.out = 16), y=rep(18, 16), R=seq(1.2,0.5,length.out=16))
# 生成引导线
dat_new % mutate(x1=x,x2=x,y1=0,y2=y-3*R)

数据准备好之后,就开始画图,先画出圈圈,然后画引导线,用 coord_polar()转换为极坐标。

ggplot() +
coord_polar()+
xlim(0, 32)+ ylim(0, 24)+
theme_void()+theme(plot.background=element_rect(fill='white'))+
geom_circle_cm(data=dat, show.legend=F, aes(x=x, y=y, rcm=R, alpha=0.1,size=NA),fill=factor(text))+
geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2), data = dat_new,linetype='twodash',size=0.1)+
geom_text(data =dat,mapping = aes(x=x,y=y,label=text,family='STYuanti-SC-Regular'))

其中 geom_circle_cm 来自 plothelper 包,这个包画的都是 ggplot 图层,这个包的作者非常牛逼了,可以去老师的 GitHub 膜拜下,geom_circle_cm 可以画出固定大小的圈,而不随图幅的缩放变化。安装方法 install.packages('plothelper');然后是 geom_segment 用来画引导线,构造好对应的 xy 坐标即可;最后是 geom_text,将文字放到前面画的圈圈的中心。

71362f782e6d285229c94fcd2d995d64.png大致思路是这样,如果调颜色字体这些细节的话建议用 R 的 export 包导出为 ppt,然后字体颜色还有布局什么的都可编辑了,用 ggplot 改坐标是个体力活。希望大家继续支持 TidyFriday!

相关链接:http://data.163.com/19/1118/17/EU9I5T13000181IU.html https://github.com/githubwwwjjj/plothelper

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值