楼主: johnsonchen14
1994 8

[问答] 请问这种图片能用ggplot2做吗?求解 [推广有奖]

  • 1关注
  • 0粉丝

硕士生

42%

还不是VIP/贵宾

-

威望
0
论坛币
2385 个
通用积分
0.0866
学术水平
0 点
热心指数
1 点
信用等级
1 点
经验
1148 点
帖子
120
精华
0
在线时间
211 小时
注册时间
2015-2-22
最后登录
2022-4-1

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
捕获.PNG
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ggplot2 gplot plot GPL

捕获.PNG (48.08 KB)

捕获.PNG

沙发
飞天玄舞6 发表于 2017-9-7 08:14:19 |只看作者 |坛友微信交流群
用EChart做较好

使用道具

藤椅
kkwei 发表于 2017-9-7 10:00:38 |只看作者 |坛友微信交流群
环形图是最差的图形类型,除了咨询公司报告,正儿八经的研究报告中都不会用到。。。

使用道具

板凳
jameschin007 发表于 2017-9-7 11:42:25 |只看作者 |坛友微信交流群
杜神最近刚写篇文章,怎么用ggplot做这种图。就是barchart +极坐标转化

使用道具

报纸
jameschin007 发表于 2017-9-7 11:42:29 |只看作者 |坛友微信交流群
杜神最近刚写篇文章,怎么用ggplot做这种图。就是barchart +极坐标转化

使用道具

地板
johnsonchen14 学生认证  发表于 2017-9-7 23:16:01 来自手机 |只看作者 |坛友微信交流群
kkwei 发表于 2017-9-7 10:00
环形图是最差的图形类型,除了咨询公司报告,正儿八经的研究报告中都不会用到。。。
以后想去咨询公司干,哈哈

使用道具

7
johnsonchen14 学生认证  发表于 2017-9-8 03:46:30 |只看作者 |坛友微信交流群
jameschin007 发表于 2017-9-7 11:42
杜神最近刚写篇文章,怎么用ggplot做这种图。就是barchart +极坐标转化
谢谢啦

使用道具

8
cheetahfly 在职认证  发表于 2018-2-8 18:09:15 |只看作者 |坛友微信交流群
研究来研究去,没有找到很优雅的方法实现,暂时用笨办法勉强模仿一下,等待高人
  1. myData <- data.frame(age = c("14岁以下", "15-19岁", "20-24岁", "25-29岁", "30-34岁", "35岁以上"),
  2.                      level = c(0.03, 0.175, 0.266, 0.264, 0.182, 0.083))

  3. windowsFonts(myFont = windowsFont("微软雅黑"))

  4. myData %>%
  5.   ggplot(aes(x = level, y = age)) +
  6.   ylim(0, 7) +
  7.   xlim(0, 1) +
  8.   annotate(geom = "rect", xmin = 0, xmax = 1, ymin = 0.1 + 1:6, ymax = 0.9 + 1:6, fill = "grey90") +
  9.   annotate(geom = "rect", xmin = 0, xmax = rev(myData$level)[-3], ymin = 0.1 + c(1:3, 5:6), ymax = 0.9 + c(1:3, 5:6), fill = "#789862") +
  10.   annotate(geom = "rect", xmin = 0, xmax = rev(myData$level)[3], ymin = 0.1 + 4, ymax = 0.9 + 4, fill = "#494166") +
  11.   annotate(geom = "text", x = 0, y = 0.5 + 1:6, label = rev(myData$age), hjust = 1.0, fontface = "bold", family = "myFont") +
  12.   annotate(geom = "text", x = 0, y = 6.5, label = "年龄", hjust = 2.5, size = 8, fontface = "bold", family = "myFont") +
  13.   annotate(geom = "text", x = 0.5, y = 0.5 +c(1:3, 5:6), label = paste0(myData$level[-4] * 100, "%"), fontface = "bold", family = "myFont", color = "#789862") +
  14.   annotate(geom = "text", x = 0.5, y = 0.5 + 4, label = paste0(myData$level[4] * 100, "%"), fontface = "bold", family = "myFont", color = "#494166") +
  15.   coord_polar() +
  16.   theme_bw() +
  17.   theme(panel.grid.major = element_blank(),
  18.         panel.grid.minor = element_blank(),
  19.         axis.title = element_blank(),
  20.         axis.text = element_blank(),
  21.         axis.ticks = element_blank(),
  22.         text = element_text(face = "bold"))
复制代码
效果如下:
环形图03.png
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
swufeyumeng + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

9
swufeyumeng 在职认证  发表于 2018-2-9 06:00:20 |只看作者 |坛友微信交流群
如果想要绘制的图上有太多的非结构化数据、自定义元素,那ggplot2是不合适的。当然这种情况也能用ggplot2绘制出来,但要在像素级别手动去画每一个点、每一条线、设定文字的位置、大小、背景色,麻烦而且违背了ggplot2设计的初衷,不够优雅,毕竟ggplot2提供的轮子是有限的。
最好的办法简单粗暴,就是在@cheetahfly的基础上,用PS、AI等手动添加那些自定义元素。
已有 1 人评分论坛币 学术水平 收起 理由
cheetahfly + 20 + 2 精彩帖子

总评分: 论坛币 + 20  学术水平 + 2   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 15:29