想要绘制显示每个列的堆叠或不同方面

want to plot stacked or different facets showing each of the column

在 R 程序中,我想绘制堆积条形图或显示与列数一样多的小平面的图。

对于堆积条形图,我在 excel 中有此数据,在 Table 1:

中给出

Table 1

下面是绘制堆积条形图的代码:

x3<- read.xlsx("D:\R\phenology.xlsx", sheet = 1)
x1=x3$Years
print(x1)
df <-data.frame(Years  = x3$Years,
            PI = x3$`Panicle.initiation.days.(Days)`,
            AD= x3$`Anthesis.days.(Days)`,
            MD = x3$`Maturity.days.(Days)`)
print(df)
Phenology <-data.frame(PI = x3$`Panicle.initiation.days.(Days)`,
            AD= x3$`Anthesis.days.(Days)`,
            MD = x3$`Maturity.days.(Days)`)
print(Phenology)
ggplot(data = df, aes(x= Years, y = Phenology)) + 
geom_bar(stat='identity', col = "green")

***对于具有列数的各个方面,我正在使用此代码":

ggplot(data = df, aes(x= Years, y = Phenology,fill = PI & AD & MD)) 
+geom_bar() + facet_grid(~PI & AD & MD)

如果我能得到解决 R 中这两个代码问题的建议,那将会很有帮助。

更新:

首先,重要的是将您的数据以长格式保存! 由于不同的原因而不是这个问题的范围,这很重要:

您可以使用 pivot_longer 执行此操作。如果您没有确定 names_tovalues_to,您将获得 namevalue 作为默认列名称。

https://tidyr.tidyverse.org/reference/pivot_longer.html

例如你可以做

df %>% 
  pivot_longer(
   -Years # the column not to reshaped
   names_to = "my desired column name", 
   values_to = "my desired value name"
  )...
library(tidyverse)

df %>% 
  pivot_longer(
    -Years
  ) %>% 
  ggplot(aes(x=factor(Years), y=value, fill=name))+
  geom_col()