Я хочу добавить clou manully на графике барстака, используя ggplot, и я получаю ошибку Ошибка: Непрерывное значение передается в дискретном масштабе - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу сделать гистограмму.Я использую ggplot2.В моих данных 37 строк и 5 столбцов.

Данные -

structure(list(Cluster_2 = c(1, 0, 0, 1, 2, 0), Cluster_3 = c(1, 
2, 2, 1, 0, 5), Cluster_9 = c(1, 5, 9, 2, 0, 11), Cluster_11 = c(2, 
0, 0, 0, 0, 0), Cluster_14 = c(0, 0, 1, 2, 1, 2)), .Names = c("Cluster_2", 
"Cluster_3", "Cluster_9", "Cluster_11", "Cluster_14"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -6L))

Код:

library(reshape2)

matrix$row <- seq_len(nrow(matrix))
dat2 <- melt(matrix, id.vars = "row")


fill_2 <- c("yellow2", "hotpink4" , "brown", "rosybrown2", "seagreen", 
            "royalblue" , "#FFFFCC","#CCFF66", "#99CC00", "#CC9900", 
            "#FF9933", "#CC6666", "#FF3333", "black", "royalblue1", 
            "royalblue2", "royalblue3", "royalblue4", "navy", "chocolate1",
            "chocolate2", "chocolate3" , "chocolate4" , "brown1" , 
            "brown2", "brown3", "brown4", "azure", "azure1", "azure2",
            "azure3", "00FFFF", "33FFCC", "66FF99", "99FFFF", "CCFFFF",
            "006666" )

ggplot(dat2, aes( y=value, x=variable , fill = row  , group= row) ) +
   geom_bar( stat="identity" , position="fill") + 
   guides(fill = FALSE) +
   scale_fill_manual(values= fill_2)

Ошибка:

Ошибка: непрерывное значение подается в дискретную шкалу. Дополнительно: Предупреждение: удалено 83 строки, содержащие пропущенные значения (position_stack).

1 Ответ

1 голос
/ 30 апреля 2019

Проблема в том, что ваш аргумент matrix$row является числовым.Вы можете обойти это, вручную изменив его на символ, либо до того, как вы построите код в ggplot.

ggplot(dat2, aes( y=value, x=variable , fill = as.character(row)  , group= row) ) +
  geom_bar( stat="identity" , position="fill") + 
  guides(fill = FALSE) +
  scale_fill_manual(values= fill_2)

NB: Вам не нужно group = row часть вашего кода.Аргумент fill группирует их.

...