繁体   English   中英

在Plotly中为R自定义文本(文本大小,文本颜色,文本角度)

[英]Customizing text (text size, text color, text angle) in Plotly for R

我正在Plotly制作圆环图/开口饼图。 由于这个问题的帮助, 在R中打开饼图/甜甜圈图表使用Plotly计算和百分比 ,我能够得到相当远的我的情节。 但是,现在我需要帮助自定义文本大小,角度和颜色。

这是数据集:

library(dplyr)
testfile <- tibble(personID = 1:10,
                   status = c("bad", "good", "bad", "bad", "bad", "bad", "bad", "bad", "bad", "good"),
                   department = c("sales", "sales", "marketing", "sales", "marketing", "management", "management", "sales", "sales", "sales"))

这是迄今为止制作情节的代码。 它具有每个状态的计数和百分比,并且在中心,它具有“好”状态个体的百分比。

library(plotly)

plot <- plot_ly(values, labels = ~status, values = ~count, text = ~count, color = I("white")) %>%
  add_pie(hole = 0.6) %>%
  layout(title = "Ratio of Good to Bad",  showlegend = F, position = "topcenter", 
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE))

plot <- layout(p, annotations=list(text=paste(good$count / sum(values$count) * 100, "%", sep=""), "showarrow"=F))
plot

这段代码产生了这两个图。 令人惊讶的是,当我单击R Studio上的“缩放”时,它看起来是第一种方式,但当我单击导出并打开PNG文件时,它看起来是第二种(非常错误的)方式。

放大图(大多数是正确的) 在此输入图像描述

导出的情节(看起来与应该如何......) 在此输入图像描述

这个放大的情节正是我想要的,除了三个问题:

  1. 我希望中心文本(20%)更大。 我试过p < - layout(p,annotations = list(text = paste(good $ count / sum(values $ count)* 100,“%”,sep =“”),“showarrow”= F,size = 25))但这没有做任何事情。

  2. 我希望两个标签(2 20%和8 80%)都是白色,而不仅仅是8 80%。 我认为color = I(“white”)可以做到这一点,但输出与我根本没有指定颜色的输出相同。

  3. 我希望标签是水平的而不是弯曲的,并且它们适合于条形。

可选:为什么导出时放大而不是放大? 我需要它看起来像放大版本。 另外,还有一种简单的方法可以说n = 2而不是2吗?

谢谢!

编辑:此代码使标签水平,但它们太小。 当我添加size = 15或任何数字时,它总是使字体大小相同但不再水平。 这也解决了导出和缩放不一致的问题。 它还修复了中心文本大小。 我只需要标签为白色,大尺寸和水平。

plot <- plot_ly(values, labels = ~status, values = ~count, text = ~count) %>%
  add_pie(hole = 0.6) %>%
  layout(title = "Ratio of Good to Bad",  showlegend = F, position = "topcenter", 
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE),
         annotations=list(text=paste(good$count / sum(values$count) * 100, "%", sep=""), "showarrow"=F, font=list(size = 40)))
plot

在此输入图像描述

更新,我破解了代码! 这是有效的代码

library(plotly)
library(dplyr)

values <- testfile %>%
  group_by(status) %>%
  summarize(count = n())

t <- list(size = 14, color = "white")

good <- values %>% filter(status == 'good')

plot <- plot_ly(values, labels = ~status, values = ~count, text = ~count, textfont = list(color = "white", size = 40)) %>%
  add_pie(hole = 0.6) %>%
  layout(title = "Ratio of Good to Bad",  showlegend = TRUE, 
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE),
         annotations=list(text=paste(good$count / sum(values$count) * 100, "%", sep=""), "showarrow"=F, font=list(size = 180, color = "black")))
plot

这是现在情节的样子:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM