楼主: dbcoffee
8158 5

[问答] 求助大神,ggplot2 图例位置过长,遮住饼图,怎么解决? [推广有奖]

  • 0关注
  • 0粉丝

已卖:86份资源

硕士生

51%

还不是VIP/贵宾

-

威望
0
论坛币
181 个
通用积分
170.9881
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1159 点
帖子
62
精华
0
在线时间
211 小时
注册时间
2015-6-16
最后登录
2022-7-10

楼主
dbcoffee 发表于 2019-8-17 14:00:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
用r作饼图(使用jupyterlab),画出来的饼图被图例遮挡,怎么解决?
代码中我用options限定画布的大小为3x3(否则jupyter中输出图形过大),指定legend.position = c(1, 0.85),但是饼图被遮挡。使用过par(xpd=TRUE)    par(mai=c(20,20,20,20))  来设置可在画图区域外画图,但是不管用(我不确定par是否能用于ggplot2,没查到相关资料)。在Rstudio中可以通过鼠标拖动放大画布来解决,但是相应的图形也变大了,字体什么的都没有相应变大。求大神帮忙。
下面的两张图,一张是我在Rstudio中输出的结果,另外一张是在jupyter中输出的结果。

options( repr.plot.width = 3, repr.plot.height = 3, warn = -1)

x <- c("男", "女", "男", "女", "男", "女", "男", "女", "男33333333333333333", "女")
t <- table(x)
fill <- names(t)
y <- as.vector (t)
label <- paste0('(', round(y / sum(y) * 100, 1), '%)')
d <- data.frame("x", y, fill)

ggplot(d, aes(x = "", y = y, fill = fill)) +
    geom_bar(stat = 'identity', width = 0.1) +
    coord_polar(theta = 'y', direction = 1) +
    labs(x = "", y = "") +
    geom_text(
        aes(x = 1, label = as.character(label)),
        position = position_stack(reverse = F, vjust = 0.5),
        size = 3,
        color = "white"
    ) +
    labs(title = "title222222222222222222222222", fill = "") +
    theme(
        axis.line = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        legend.key.size = unit(0.3, 'cm'),
        legend.text = element_text(size = 8),
        legend.position = c(1, 0.85)
    )




下载.png Rplot.jpeg


二维码

扫码加我 拉你入群

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

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


沙发
Whig 在职认证  发表于 2019-8-17 17:08:35 来自手机
dbcoffee 发表于 2019-8-17 14:00
用r作饼图(使用jupyterlab),画出来的饼图被图例遮挡,怎么解决?
代码中我用options限定画布的大小为3x ...
你这个是图例的问题吧,修改图例设置

藤椅
dbcoffee 发表于 2019-8-17 18:19:59
Whig 发表于 2019-8-17 17:08
你这个是图例的问题吧,修改图例设置
是的,我通过legend.position = c(1, 0.85)将图例定位到右上角(默认是在右侧的中间,个人觉得不太美观),然后就出现了这样的问题。当然,把legend.position = c(1, 0.85)删掉就没问题。问题是怎样能将图例放置到指定位置而又不会覆盖饼图?或者说将图例绘制到绘图区以外?
r的基础绘图功能好像可以通过par(xpd=TRUE)    par(mai=c(20,20,20,20)) 等来设置。

板凳
zhou1_20 发表于 2019-8-18 12:08:54
在theme中添加下面参数
legend.position = 'bottom',
legend.direction = "horizontal"
把图例在底部水平放置
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

报纸
dbcoffee 发表于 2019-8-18 18:46:55
zhou1_20 发表于 2019-8-18 12:08
在theme中添加下面参数
legend.position = 'bottom',
legend.direction = "horizontal"
谢谢,放在顶部或底部是没有问题的,去掉legend.position也是没有问题的,问题是我想将legend放到右上角,但是需要避免将饼图遮挡住,如何处理?

地板
cheetahfly 在职认证  发表于 2019-8-18 19:24:35
theme里面加:
legend.background = element_blank()
然后调整图画的大小

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-27 07:09