簡體   English   中英

將堆疊條形圖從 R 變成 ggplot2

[英]turning stacked bar graph from R into ggplot2

更新使用 R 和 ggplot2 進行數據分析。 試圖弄清楚如何將我的數據從 R 轉換為 ggplot2 格式。 數據是 5 個不同類別的一組值,我想制作一個堆積條形圖,允許我根據值將堆積條形圖分成 3 個部分。 前任。 基於任意截止值的小、中和大值。 類似於 excel 中的 100% 堆疊條形圖,其中所有值的比例加起來為 1(在 y 軸上)。 如果這也是需要注意的有價值的事情,那么有相當多的數據(約 1500 個觀察值)。

這是數據的示例(但每列大約有 1000 個觀察值)(我放了一個 excel 屏幕截圖,因為我不知道下面是否有效)

dput(sample-data)

與此圖像類似,但比例特定於任意數據截止值,其中只有 3 個

這類問題通常是數據重組問題。 請參閱將 data.frame 從寬格式重塑為長格式
以下代碼使用內置數據集iris ,具有 4 個數字列,plot 是一個條形圖,其中數據值在重塑數據后被切割成多個級別。

我選擇了截止點0.20.7 ,但(0, 1)中的任何其他數字都可以。 截止向量是brks和級別名稱labls

library(tidyverse)

data(iris)

brks <- c(0, 0.2, 0.7, 1)
labls <- c('Small', 'Medium', 'Large')

iris[-5] %>%
  pivot_longer(
    cols = everything(),
    names_to = 'Category',
    values_to = 'Value'
  ) %>%
  group_by(Category) %>%
  mutate(Value = (Value - min(Value))/diff(range(Value)),
         Level = cut(Value, breaks = brks, labels = labls, 
                     include.lowest = TRUE, ordered_result = TRUE)) %>%
  ggplot(aes(Category, fill = Level)) +
  geom_bar(stat = 'count', position = position_fill()) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

在此處輸入圖像描述

這是一個不需要重新格式化數據的解決方案。

diamonds數據集附帶ggplot2 “顏色”列是分類,“價格”列是數字:

library(ggplot)

ggplot(diamonds) + 
    geom_bar(aes(x = color, fill = cut(price, 3, labels = c("low", "mid", "high"))),
             position = "fill") +
    labs(fill = "price")

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM