风筝图 tidyr
Kite diagram tidyr
我在关注之前的一个话题(不确定 post 那里的问题是否不合适,因为它是从 2020 年开始的)并且代码生成了一个风筝图,但是,当使用我的数据时,轴是交换了,我想要的 x 轴值也包含在错误的组中。我希望 x-acis 是样方数,y 轴是物种。
上一个话题:
我的数据是这样的
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
我认为问题出在变量的创建上,但我不确定要做什么或如何安排我的数据以便它在此框架中工作。
如果不清楚请告诉我。非常感谢
问题是 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)
我在关注之前的一个话题(不确定 post 那里的问题是否不合适,因为它是从 2020 年开始的)并且代码生成了一个风筝图,但是,当使用我的数据时,轴是交换了,我想要的 x 轴值也包含在错误的组中。我希望 x-acis 是样方数,y 轴是物种。
上一个话题:
我的数据是这样的
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
我认为问题出在变量的创建上,但我不确定要做什么或如何安排我的数据以便它在此框架中工作。
如果不清楚请告诉我。非常感谢
问题是 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)