我在一个运行时shiny 的Flexdashboard上工作,在那里我正在绘制一个甜甜圈图表.切片取决于某个变量,有时太小,无法在内部显示百分比,在这种情况下,标签显示在图表外部,如下图所示.

Donut Chart Image

有没有办法保留切片足够大的标签/百分比,而go 掉由于切片较小而出现在外面的标签/百分比?它在上面的图像中看起来太乱了,我希望能够看到百分比数据,而不必将鼠标悬停在上面.

这是数据和代码

library(plotly)
library(tidyr)
library(dplyr)

InT <- data.frame(Category = c(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,AA,AB),
`Category Value` = c(172928,1106269,222102,0,1054448,682990,1975937,779346,12398,0,1450944,368130,2493154,4347455,1865752,1443840,692972,61891,6443758,1539659,1659183,2711385,856182,1992250,3722195,2762090,257023,1204422))

plot_ly(InT, labels = ~Category, values = ~`Category Value`) %>%
  add_pie(hole = 0.6) %>%
  layout(title = "",  showlegend = F, 
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE))

推荐答案

  1. 另一种 Select 是使用forcats个包中的fct_lump_min()个将类别与"小"计数组合在一起.
  2. 另一个实用提示:如果您想使用Category Value作为名称,请使用InT <- as_data_frametibble,而不是InT <- data.frame.因为data.frameas.data.frame将名称更改为.个单独的名称.如果它打算使用Category.Value(这很好),那么您必须调整您的进一步代码.
  3. 另一个提示:如果您想使用data.frame,那么传递一个向量列表并加上check.names = FALSE,那么变量名将保持为Category Value. 以下是一些选项:
InT <- tibble(
  Category = c(LETTERS, "AA", "AB"),
  `Category Value` = c(172928, 1106269, 222102, 0, 1054448, 682990, 1975937, 779346, 12398, 0, 1450944, 368130, 2493154, 4347455, 1865752, 1443840, 692972, 61891, 6443758, 1539659, 1659183, 2711385, 856182, 1992250, 3722195, 2762090, 257023, 1204422)
)
InT

InT <- as_data_frame(list(
  Category = c(LETTERS, "AA", "AB"),
  `Category Value` = c(172928, 1106269, 222102, 0, 1054448, 682990, 1975937, 779346, 12398, 0, 1450944, 368130, 2493154, 4347455, 1865752, 1443840, 692972, 61891, 6443758, 1539659, 1659183, 2711385, 856182, 1992250, 3722195, 2762090, 257023, 1204422)
))
InT

InT <- data.frame(list(
  Category = c(LETTERS, "AA", "AB"),
  `Category Value` = c(172928, 1106269, 222102, 0, 1054448, 682990, 1975937, 779346, 12398, 0, 1450944, 368130, 2493154, 4347455, 1865752, 1443840, 692972, 61891, 6443758, 1539659, 1659183, 2711385, 856182, 1992250, 3722195, 2762090, 257023, 1204422)
), check.names = FALSE)
InT

平淡的情节:

library(plotly)
library(dplyr)
library(forcats)

InT %>%
  mutate(Category = fct_lump_min(Category, min = 400000, w = `Category Value`)) %>% 
  summarise(`Category Value` = sum(`Category Value`), .by=Category) %>% 
  plot_ly(labels = ~Category, values = ~`Category Value`) %>%
  add_pie(hole = 0.6) %>%
  layout(title = "", showlegend = F, 
         xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE),
         yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = TRUE))

enter image description here

R相关问答推荐

使用spatVector裁剪网格数据时出现的问题

geom_Ribbon条件填充创建与数据不匹配的形状(ggplot 2 r)

r中的stat_difference函数不起作用

r—绘制相交曲线

从BRM预测价值

将多列合并为单独的名称—值对

找出二叉树中每个 node 在R中的深度?

LOF中的插图短文字幕

如何删除仅在数据集顶部和底部包含零的行

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

从多个线性回归模型中提取系数

如何识别倒排的行并在R中删除它们?

如何将Which()函数用于管道%>;%

Conditional documentr::R中数据帧的summarize()

如何根据其他列中的两个条件来计算数据帧中的行之间的差异?

使用函数从R中的列中删除标高

将边列表转换为路径长度列表

如何使用list_rind在列表中保留已命名但不包含第0行的记录?

如何修复geom_rect中的层错误?

根据列和行的不同组合 Select 各种单元格