Как сделать полукруглый пончик с библиотекой highcharter? - PullRequest
3 голосов
/ 04 ноября 2019

Я пытаюсь сделать пончик полукруга с библиотекой highcharter, но я знаю только, как сделать круговую диаграмму. Я знаю, что с JS вы можете сделать это, добавив «startAngle» и «endAngle», но я хочу знать, как сделать это с R:

A <- c("a", "b", "c", "d")
B <- c(4, 6, 9, 2)

C <- c(23, 26, 13, 15)
df <- data.frame(A, B, C)

highchart() %>% 
  hc_chart(type = "pie") %>% 
  hc_add_series_labels_values(labels = df$A, values = df$B)%>%    

  hc_tooltip(crosshairs = TRUE, borderWidth = 5, sort = TRUE, shared = TRUE, table = TRUE,
             pointFormat = paste('<b>{point.percentage:.1f}%</b>')
  ) %>%

  hc_title(text = "ABC",
           margin = 20,
           style = list(color = "#144746", useHTML = TRUE))

enter image description here

Спасибо!

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Попробуйте добавить startAngle = -90, endAngle = 90 внутри hc_add_series_labels_values.

Примечание согласно предупреждению hc_add_series_labels_values устарело, поэтому рекомендуем использовать hc_add_series.

highchart() %>%
  hc_add_series(type = "pie", data = df, hcaes(x = A, y = B), startAngle = -90, endAngle = 90) %>%
  hc_tooltip(pointFormat = '<b>{point.percentage:.1f}%</b>') %>%
  hc_title(text = "ABC",
           margin = 20,
           style = list(color = "#144746", useHTML = TRUE))

enter image description here

1 голос
/ 04 ноября 2019

Вы можете сделать что-то подобное, не используя библиотеку Highcharts.

library(tidyverse)
library(ggforce)
library(scales)
library(ggplot2)

# -------------------------------------------------------------------------

A <- c("a", "b", "c", "d")
B <- c(4, 6, 9, 2)

C <- c(23, 26, 13, 15)
df <- data.frame(A, B, C)

# Ensure A is a factor (we'll be using it to fill the pie)
df$A <- factor(df$A)

# compute the individual proportion in this case using var C
df$prop <- df$C/sum(df$C) 

# compute the cumulative proportion and use that to plot ymax 
df$p_end <- cumsum(df$prop)

# generate a y-min between 0 and 1 less value than p_end (using p_end) 
df$p_start <- c(0, head(df$p_end ,-1))



# -------------------------------------------------------------------------

# plot 
df %>%
  mutate_at(c("p_start", "p_end"), rescale, to=pi*c(-.5,.5), from=0:1) %>%
  ggplot + 
  geom_arc_bar(aes(x0 = 0, y0 = 0, r0 = .5, r = 1, start = p_start, end = p_end, fill=A)) + 
  coord_fixed() +xlab("X_label") + ylab("Y_lablel") + guides(fill=guide_legend(title="Legend Title"))


Вывод

pit_chart

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...