我在关注之前的一个线程(我不确定是否不适合在那里发布这个问题,因为它是2020年的问题),代码生成了一个风俗图,然而,当使用我的数据时,轴被交换,我想要的x轴的值也包含在错误的组中。我希望x-aci是平方数,y轴是种。
上一个线程:Kite Diagram in R
我的数据如下所示
structure(list(quadrat_number = 0:87, Ulva.sp. = c(12L, 32L,
24L, 28L, 48L, 16L, 80L, 24L, 80L, 100L, 16L, 32L, 40L, 40L,
68L, 56L, 28L, 32L, 20L, 8L, 24L, 12L, 0L, 20L, 56L, 32L, 72L,
48L, 76L, 68L, 20L, 88L, 88L, 0L, 56L, 12L, 12L, 32L, 100L, 28L,
0L, 0L, 4L, 44L, 80L, 100L, 100L, 0L, 88L, 96L, 100L, 0L, 0L,
0L, 0L, 0L, 0L, 32L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), Hormosira = c(0L, 72L, 24L, 32L, 0L, 0L, 52L,
8L, 24L, 80L, 4L, 16L, 12L, 16L, 60L, 16L, 12L, 0L, 0L, 0L, 32L,
8L, 0L, 64L, 0L, 8L, 24L, 0L, 0L, 0L, 4L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), Bostrychia = c(92L, 0L, 0L, 40L, 0L, 96L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 12L, 0L, 76L, 0L, 100L, 48L,
88L, 100L, 28L, 0L, 28L, 0L, 16L, 0L, 0L, 0L, 52L, 92L, 52L,
88L, 96L, 20L, 44L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 24L,
0L, 4L, 36L, 4L, 0L, 4L, 84L, 100L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 36L, 52L, 20L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Corallina.crustose = c(0L,
4L, 4L, 4L, 0L, 0L, 0L, 0L, 0L, 100L, 8L, 0L, 56L, 0L, 88L, 0L,
40L, 0L, 28L, 0L, 28L, 64L, 12L, 0L, 76L, 0L, 20L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Jania = c(0L, 0L, 0L,
0L, 0L, 0L, 0L, 100L, 0L, 0L, 0L, 32L, 0L, 28L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 28L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), Pyropia.cinnamomea = c(0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 12L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 8L, 20L, 52L, 0L,
4L, 0L, 0L, 24L, 40L, 12L)), class = "data.frame", row.names = c(NA,
-88L))我遵循了另一个线程上的代码。
library(plotrix)
kiteChart(dataprune)
library(dplyr)
library(tidyr)
dataprune <- as.data.frame(dataprune) %>% mutate(species = rownames(dataprune)) %>%
pivot_longer(-species, names_to = "X_var", values_to = "values") %>%
mutate(species = factor(species, levels = unique(species))) %>%
mutate(X_var = factor(X_var, levels = unique(X_var))) %>%
mutate(NewY = as.numeric(species)*2) %>%
mutate(normval = values / max(values)) %>%
mutate(NewX = as.numeric(X_var))
ggplot(dataprune, aes(x = NewX, fill = species))+
geom_ribbon(aes(ymin = NewY-normval, ymax = NewY+normval))+
scale_y_continuous(breaks = unique(dataprune$NewY), labels = levels(dataprune$species))+
scale_x_continuous(breaks = unique(dataprune$NewX), labels = levels(dataprune$X_var), name = "")这在另一个线程上产生了这个图not correct kite diagram,他们得到了一个像这样的图。ideal graph
我认为问题出在变量的创建上,但我不确定该怎么做,也不知道如何排列我的数据,以便它能在这个框架中工作。
如果这个不清楚,请告诉我。非常感谢
发布于 2021-08-25 02:22:56
问题是你的数据对于kitePlot()来说是错误的。您需要将y轴变量设置为行名,x轴变量设置为列名。
下面是一种使用tidyr的方法
library(tidyverse)
library(plotrix)
dataprune %>%
pivot_longer(-quadrat_number, names_to = "organism") %>%
pivot_wider(names_from = quadrat_number, values_from = value) %>%
column_to_rownames("organism") -> reshaped.dataprune
reshaped.dataprune[,1:5]
# 0 1 2 3 4
#Ulva.sp. 12 32 24 28 48
#Hormosira 0 72 24 32 0
#Bostrychia 92 0 0 40 0
#Corallina.crustose 0 4 4 4 0
#Jania 0 0 0 0 0
#Pyropia.cinnamomea 0 0 0 0 0
kiteChart(reshaped.dataprune)

https://stackoverflow.com/questions/68903466
复制相似问题