我有一系列描述事件持續時間(以天為單位)的串列,我想將此資料繪制為線以比較串列。
下面是一些示例資料,說明在學校的哪幾天提供哪些午餐選擇。我已經決議了我的資料,這是簡化的形式。最初它是復雜字串的形式。
soup = c(15:18)
grilledcheese = c(0:19)
pasta = c(3:13)
我想在x軸上,并創建類似于此的曲線圖,天soup,grilled cheese和pasta在y軸:

我在網上查看,我不確定要使用哪種圖表。部分困難在于資料不是從 0 開始,y 軸應該代表因子。
我試過的:
我嘗試在 ggplot 中繪制它,但它只需要資料幀。我想知道是否有辦法直接從串列中繪圖。似乎這里應該有一個簡單的解決方案,也許我錯過了。
我也試過這個
plot(x = grilledcheese, y = rep(1, length(grilledcheese)))
這更接近我想要的,但我不確定如何在 y 軸上繪制多個因素。
uj5u.com熱心網友回復:
首先,讓我們使用 ggplot2 使資料更易于處理:
library(tidyverse)
soup = c(15:18)
grilledcheese = c(0:19)
pasta = c(3:13)
df <- data.frame(soup_min = c(min(soup),max(soup)),
grilledcheese = c(min(grilledcheese),max(grilledcheese)),
pasta = c(min(pasta),max(pasta)))
df <- pivot_longer(df, cols = 1:3) %>%
group_by(name) %>%
mutate(minv = min(value),
maxv = max(value)) %>%
ungroup() %>%
select(-value) %>%
distinct()
資料
# A tibble: 3 x 3
name minv maxv
<chr> <int> <int>
1 soup_min 15 18
2 grilledcheese 0 19
3 pasta 3 13
圖形
然后我們可以繪制您想要的不同元素:每條線的起點和終點、線本身和軸主題。
ggplot(df)
geom_segment(aes(x = minv, xend = maxv, y = name, yend = name))
geom_point(aes(x = minv, y = name))
geom_point(aes(x = maxv, y = name))
scale_x_continuous(breaks = c(0:20),
labels = c(0:20),
limits = c(0,20),
expand = c(0,0))
theme(axis.ticks.x = element_line(size = 1),
axis.ticks.y = element_blank(),
axis.ticks.length =unit(.25, "cm"),
axis.line.x = element_line(size = 1),
panel.background = element_blank())
labs(x = "",
y = "")
我們得到這個:

這應該可以解決問題。
額外定制
現在,如果您想在刻度之間放置刻度標簽,您可能需要在
uj5u.com熱心網友回復:
您首先需要將資料設計成資料框。你可以做,例如
soup = c(15:18)
grilledcheese = c(0:19)
pasta = c(3:13)
## make dataframe
library(tidyverse)
my_x_axis <- as_tibble(seq(0,20))
names(my_x_axis) <- 'x'
my_x_axis %>% mutate(soup_y = 1*ifelse(as.numeric(x %in% soup) == 1, 1, NA)) %>%
mutate(grilledcheese_y = 2*ifelse(as.numeric(x %in% grilledcheese) == 1, 1, NA)) %>%
mutate(pasta_y = 3*ifelse(as.numeric(x %in% pasta) == 1, 1, NA)) -> data
在這里,我使用了您的 x 軸值介于 0 和 20 之間的知識。您也可以通過例如通過min(c(soup,grilledcheese,pasta))和/min(c(soup,grilledcheese,pasta))或其他一些邏輯來選擇它們。
按照
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327692.html
上一篇:從字符向量CSV讀取到R中的碎石
