首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为R定制文本(文本大小、文本颜色、文本角度)

为R定制文本(文本大小、文本颜色、文本角度)
EN

Stack Overflow用户
提问于 2019-06-10 19:35:06
回答 1查看 6.5K关注 0票数 2

我正在做一个甜甜圈图/打开的饼图。由于这个问题的帮助,Open Pie Chart/Donut Chart in R using Plotly with count and percentage,我能够很好地完成我的计划。然而,现在我需要帮助定制文本大小,角度和颜色。

以下是数据集:

代码语言:javascript
复制
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"))

到目前为止,这是制作情节的代码。它有每种状态的计数和百分比,而在中间,它有“良好”状态个体的百分比。

代码语言:javascript
复制
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上的“缩放”时,它看起来是第一种方式,但当我单击export文件时,它看起来是第二种方式(非常错误)。

缩放的情节(大部分正确)

导出的地块(看起来和它应该做的非常不同.)

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

  1. 我希望中间的文本(20%)更大。我尝试过p <- layout(p,annotations=list(好的$text=paste/sum(值$count)* 100,"%",sep=“),”显示箭头“=F,size =25),但是没有用。
  2. 我希望这两个标签(2 20%和8 80%)都是白色的,而不仅仅是8 80%。我以为color = I("white")就能做到这一点,但是输出与我根本不指定颜色时是一样的。
  3. 我希望标签是水平的,而不是弯曲,并使他们适合在酒吧内。

可选:为什么当它被导出和放大时看起来会有所不同?我需要它看起来像放大版。另外,是否也有一种简单的方法可以让它说n= 2而不是仅仅2呢?

谢谢!

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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 13:08:00

更新,我破解了密码!这是起作用的代码

代码语言:javascript
复制
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

现在的情节是这样的:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56532527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档