R 饼图标签重叠

R 饼图标签重叠,r,ggplot2,r-markdown,R,Ggplot2,R Markdown,无论我做什么,我似乎都找不到代码来确保我的饼图标签不与饼图或其他标签重叠 我以各种方式输入了geom\u text\u repel并调整了vjust大小强制力x,但没有任何效果。它对某些图表有效,而对其他图表无效。 --- 标题:“无标题” 日期:“2019年8月14日” 输出:html\u文档 --- ```{r eval=TRUE,echo=FALSE,results=“asis”,warning=FALSE,message=FALSE,fig.height=6.25,fig.width=

无论我做什么,我似乎都找不到代码来确保我的饼图标签不与饼图或其他标签重叠

我以各种方式输入了
geom\u text\u repel
并调整了
vjust
大小
强制力
x
,但没有任何效果。它对某些图表有效,而对其他图表无效。

---
标题:“无标题”
日期:“2019年8月14日”
输出:html\u文档
---
```{r eval=TRUE,echo=FALSE,results=“asis”,warning=FALSE,message=FALSE,fig.height=6.25,fig.width=12}
图书馆(plyr)
图书馆(dplyr)
图书馆(kableExtra)
图书馆(比例尺)
图书馆(GG2)
图书馆(RODBC)
库(数据表)
图书馆(DT)
图书馆(treemapify)
图书馆(devtools)
图书馆(摘要)
图书馆(绘本)
图书馆(闪亮)
图书馆(ggrepel)
图书馆(expss)

感谢您提供工作数据/代码。如果您愿意使用plotly软件包
。以下是您的数据示例:

library(dplyr)
library(plotly)

#
rptyear <- 2018
colours <- c("A" = "royalblue3", "B" = "red", "C" = "gold", "D" = "green4")

# data
premiumtable <- data.frame(Var1 = rep(c("A","B","C","D"),11),
                           Var2 = c(rep(2009,4),rep(2010,4),rep(2011,4),rep(2012,4),rep(2013,4),rep(2014,4),rep(2015, 4),rep(2016,4), rep(2017,4),rep(2018,4),rep(2019,4)),
                           Freq = as.numeric(c(13223284, 3379574,721217, 2272843,14946074,4274769, 753797,2655032, 15997384, 4952687, 722556,3035566,16244348,5541543,887109,3299966,15841630,6303443,1101696,3751892,14993295, 6993626,1312650,4158196,13946038, 7081457,1317428,4711389, 12800640, 6923012, 1345159, 4911780, 12314663, 6449919, 1395973,5004046,12612704,6968110,1507382,5745079,15311213,8958588,1849069,6819488)))

# prepare plot data
currentPrem <-   
  premiumtable %>% 
  filter(Var2 == rptyear, Freq != 0) %>% 
  mutate(Freq = as.numeric(Freq))

# create plot labels
labels = paste0(currentPrem$Var1, "\n $",prettyNum(round(as.numeric(currentPrem$Freq)/1000), big.mark = ","))

# create plot
plot_ly(currentPrem,
        labels = ~labels,
        values = ~Freq, type = 'pie',
        textposition = 'outside',
        textinfo = 'label',
        colors = colours) %>%
  layout(title = paste("YTD Numbers:", rptyear),
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         showlegend = FALSE)
库(dplyr)
图书馆(绘本)
#

请提供一个可复制的示例。好的,我已经添加了数据并更改了图片以反映数据,但是上面发布的相同代码适用于不同的数据(即没有重叠),但有时确实如此。每次的“var1”和“var2”都是一样的,只是“Freq”不同。这还远远不能复制。例如,筛选语句中的
rptyear
未定义,比例填充手册中的
colors
未定义。函数
geom\u text\u repel
不是来自基本库,因此需要对该库调用
library()
。如果以R代码形式提供数据(即使用dput),也会更容易。您能否将提供的代码复制粘贴到一个新的R会话中,并在没有错误的情况下运行它?然后它是可复制的。好了,这是好的。我肯定是开放的,我明天会测试这个,看看它是如何进行的!谢谢:)嗨,这个很好用!我只需要知道如何使用r markdown和knitr打印它,我尝试将图形分配给变量prempie,就像在我的示例中一样,然后进行打印(prempie,floating=FALSE),但它没有显示。我假设这是一个简单的解决方案,但是一些简单的研究没有让我得到任何结果,但是我将继续搜索,同时等待响应。提示:我正在编织PDFY您的原始代码的输出为html。如果希望输出为PDF,可以使用
export()
写入磁盘(png、PDF等),然后使用
knitr::include_graphics()
或使用软件包
webshot
。如果你需要更多的细节,我会把这当作一个新问题来问。
library(dplyr)
library(plotly)

#
rptyear <- 2018
colours <- c("A" = "royalblue3", "B" = "red", "C" = "gold", "D" = "green4")

# data
premiumtable <- data.frame(Var1 = rep(c("A","B","C","D"),11),
                           Var2 = c(rep(2009,4),rep(2010,4),rep(2011,4),rep(2012,4),rep(2013,4),rep(2014,4),rep(2015, 4),rep(2016,4), rep(2017,4),rep(2018,4),rep(2019,4)),
                           Freq = as.numeric(c(13223284, 3379574,721217, 2272843,14946074,4274769, 753797,2655032, 15997384, 4952687, 722556,3035566,16244348,5541543,887109,3299966,15841630,6303443,1101696,3751892,14993295, 6993626,1312650,4158196,13946038, 7081457,1317428,4711389, 12800640, 6923012, 1345159, 4911780, 12314663, 6449919, 1395973,5004046,12612704,6968110,1507382,5745079,15311213,8958588,1849069,6819488)))

# prepare plot data
currentPrem <-   
  premiumtable %>% 
  filter(Var2 == rptyear, Freq != 0) %>% 
  mutate(Freq = as.numeric(Freq))

# create plot labels
labels = paste0(currentPrem$Var1, "\n $",prettyNum(round(as.numeric(currentPrem$Freq)/1000), big.mark = ","))

# create plot
plot_ly(currentPrem,
        labels = ~labels,
        values = ~Freq, type = 'pie',
        textposition = 'outside',
        textinfo = 'label',
        colors = colours) %>%
  layout(title = paste("YTD Numbers:", rptyear),
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
         showlegend = FALSE)