R语言 创建分组条形图

ekqde3dh  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(178)

我试图在r中制作分组条形图,但它不起作用。换句话说,我只能得到丑陋的堆叠图,这是不够的。我给我的数据截图和分组图的例子,我已经在excel中创建。当然,这是不可能创建一个相同的图表,但它只是我的想法和密切的一个就足够了。
我也会给出一个可视化的例子,我在用r写代码后得到的。
数据:

要创建的条形图(接近即可):

我的代码

ggplot(PV_cluster1, aes(Years, y= c(MSFT, ATVI, AMOT),  group=3)) + 
  geom_bar(position = "stack", stat = "identity", mapping = aes( y= MSFT, group=1, col="MSFT")) +
  geom_bar(position = "stack", stat = "identity",mapping = aes( y= ATVI, group=2, col="ATVI")) + 
  geom_bar(position = "stack", stat = "identity",mapping = aes( y= AMOT, group=3, col="AMOT"))+
  scale_y_continuous(breaks=c(-20, 0, 20, 40, 60, 80, 100)) +
  theme_bw() + 
  labs(title = "Cluster 1 stocks", subtitle = "MSFT, ATVI, AMOT", colour="Stocks", y= "Price Variance")

这就是我在这段代码后得到的结果

km0tfn4u

km0tfn4u1#

当使用ggplot2时,你必须有整洁的格式。这是如何做到的,细节应该清楚。

library(tidyverse)

df <- structure(list(MSFT = c(21.87849, 16.505711, 39.74112, 20.21909, 58.259263), 
               ATVI = c(94.26838, -3.232714, 73.87468, -27.2118, 27.359807), 
               AMOT = c(14.07271, -13.929934, 48.61813, 28.48922, 9.070286), 
               Years = c("2015", "2016", "2017", "2018", "2019")), 
          row.names = 2:6, class = "data.frame") 
df %>%
  pivot_longer(
    cols = MSFT:AMOT,
    values_to = "value",
    names_to = "stock"
  ) %>%
  ggplot(aes(x=Years, y=value, fill=stock))+
  geom_col(position = "dodge")

创建于2023年1月7日,使用reprex v2.0.2

相关问题