我的問題與這個問題非常相似,想知道 R 中的條形圖上哪個因子級別已映射到哪種填充顏色?. 現在我正在努力解決類似的問題,但是在這種情況下我有一個離散的規模。我的劇情是這樣的:
# The data
plot_data <- structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3,
24.4, 22.8, 19.2, 17.8, 16.4, 17.3, 15.2, 10.4, 10.4, 14.7, 32.4,
30.4, 33.9, 21.5, 15.5, 15.2, 13.3, 19.2, 27.3, 26, 30.4, 15.8,
19.7, 15, 21.4), cyl = structure(c(2L, 2L, 1L, 2L, 3L, 2L, 3L,
1L, 1L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 3L, 3L,
3L, 3L, 1L, 1L, 1L, 3L, 2L, 3L, 1L), .Label = c("4", "6", "8"
), class = "factor"), disp = c(160, 160, 108, 258, 360, 225,
360, 146.7, 140.8, 167.6, 167.6, 275.8, 275.8, 275.8, 472, 460,
440, 78.7, 75.7, 71.1, 120.1, 318, 304, 350, 400, 79, 120.3,
95.1, 351, 145, 301, 121), hp = c(110, 110, 93, 110, 175, 105,
245, 62, 95, 123, 123, 180, 180, 180, 205, 215, 230, 66, 52,
65, 97, 150, 150, 245, 175, 66, 91, 113, 264, 175, 335, 109),
drat = c(3.9, 3.9, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92,
3.92, 3.92, 3.07, 3.07, 3.07, 2.93, 3, 3.23, 4.08, 4.93,
4.22, 3.7, 2.76, 3.15, 3.73, 3.08, 4.08, 4.43, 3.77, 4.22,
3.62, 3.54, 4.11), wt = c(2.62, 2.875, 2.32, 3.215, 3.44,
3.46, 3.57, 3.19, 3.15, 3.44, 3.44, 4.07, 3.73, 3.78, 5.25,
5.424, 5.345, 2.2, 1.615, 1.835, 2.465, 3.52, 3.435, 3.84,
3.845, 1.935, 2.14, 1.513, 3.17, 2.77, 3.57, 2.78), qsec = c(16.46,
17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20, 22.9, 18.3,
18.9, 17.4, 17.6, 18, 17.98, 17.82, 17.42, 19.47, 18.52,
19.9, 20.01, 16.87, 17.3, 15.41, 17.05, 18.9, 16.7, 16.9,
14.5, 15.5, 14.6, 18.6), vs = structure(c(1L, 1L, 2L, 2L,
1L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L), .Label = c("0",
"1"), class = "factor"), am = structure(c(NA, NA, NA, 1L,
1L, 1L, 1L, NA, NA, NA, NA, 1L, 1L, 1L, 1L, 1L, 1L, NA, NA,
NA, 1L, 1L, 1L, 1L, 1L, NA, 2L, 2L, 2L, 2L, 2L, NA), .Label = c("0",
"1"), class = "factor"), gear = structure(c(2L, 2L, 2L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 2L), .Label = c("3",
"4", "5"), class = "factor"), carb = structure(c(4L, 4L,
1L, 1L, 2L, 1L, 4L, 2L, 2L, 4L, 4L, 3L, 3L, 3L, 4L, 4L, 4L,
1L, 2L, 1L, 1L, 2L, 2L, 4L, 2L, 1L, 2L, 2L, 4L, 5L, 6L, 2L
), .Label = c("1", "2", "3", "4", "6", "8"), class = "factor")), row.names = c("Mazda RX4",
"Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout",
"Valiant", "Duster 360", "Merc 240D", "Merc 230", "Merc 280",
"Merc 280C", "Merc 450SE", "Merc 450SL", "Merc 450SLC", "Cadillac Fleetwood",
"Lincoln Continental", "Chrysler Imperial", "Fiat 128", "Honda Civic",
"Toyota Corolla", "Toyota Corona", "Dodge Challenger", "AMC Javelin",
"Camaro Z28", "Pontiac Firebird", "Fiat X1-9", "Porsche 914-2",
"Lotus Europa", "Ford Pantera L", "Ferrari Dino", "Maserati Bora",
"Volvo 142E"), class = "data.frame")
# The plot
p <- ggplot(
data = plot_data,
aes(x = am, fill = cyl)
) geom_bar(position = "dodge") facet_wrap("gear")
現在,當我以這種方式檢查連接到繪圖的資料集時:
df <- ggplot2::ggplot_build(p)
df <- df$data
我看到這樣的事情:
fill y count prop x flipped_aes PANEL group ymin ymax xmin xmax colour size linetype alpha
1 #F8766D 1 1 1 0.700 FALSE 1 1 0 1 0.55 0.85 NA 0.5 1 NA
2 #00BA38 2 2 1 1.000 FALSE 1 2 0 2 0.85 1.15 NA 0.5 1 NA
3 #619CFF 12 12 1 1.300 FALSE 1 3 0 12 1.15 1.45 NA 0.5 1 NA
4 #F8766D 8 8 1 2.775 FALSE 2 7 0 8 2.55 3.00 NA 0.5 1 NA
5 #00BA38 4 4 1 3.225 FALSE 2 8 0 4 3.00 3.45 NA 0.5 1 NA
6 #F8766D 2 2 1 1.700 FALSE 3 4 0 2 1.55 1.85 NA 0.5 1 NA
7 #00BA38 1 1 1 2.000 FALSE 3 5 0 1 1.85 2.15 NA 0.5 1 NA
8 #619CFF 2 2 1 2.300 FALSE 3 6 0 2 2.15 2.45 NA 0.5 1 NA
我如何知道上面資料框中的哪些“x”值映射到原始資料中的哪些值?我知道,通過手動檢查,x=2.775 和 x=3.225 是 NA,但是如何從 ggplot 獲取它?
我試圖縮放構建物件的屬性,但最終一無所獲。
uj5u.com熱心網友回復:
這遠不是一個完美的答案,而是基于在戳 ggplot 物件時的反復試驗......但它可以讓你從布局到資料的標簽:
pl <- ggplot2::ggplot_build(p)
d <- pl$data[[1]]
# round position to integer
d$matchlabel <- round(d$x)
# get the plot labels from the layout part of the object
labs <- pl$layout$panel_scales_x[[1]]$range$range
# select labels acording to position integer
d$label <- labs[d$matchlabel]
d
fill y count prop x flipped_aes PANEL group ymin ymax xmin xmax colour size linetype alpha matchlabel label
1 #F8766D 1 1 1 0.700 FALSE 1 1 0 1 0.55 0.85 NA 0.5 1 NA 1 0
2 #00BA38 2 2 1 1.000 FALSE 1 2 0 2 0.85 1.15 NA 0.5 1 NA 1 0
3 #619CFF 12 12 1 1.300 FALSE 1 3 0 12 1.15 1.45 NA 0.5 1 NA 1 0
4 #F8766D 8 8 1 2.775 FALSE 2 7 0 8 2.55 3.00 NA 0.5 1 NA 3 <NA>
5 #00BA38 4 4 1 3.225 FALSE 2 8 0 4 3.00 3.45 NA 0.5 1 NA 3 <NA>
6 #F8766D 2 2 1 1.700 FALSE 3 4 0 2 1.55 1.85 NA 0.5 1 NA 2 1
7 #00BA38 1 1 1 2.000 FALSE 3 5 0 1 1.85 2.15 NA 0.5 1 NA 2 1
8 #619CFF 2 2 1 2.300 FALSE 3 6 0 2 2.15 2.45 NA 0.5 1 NA 2 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403333.html
標籤:
下一篇:AWSCLI:aws事件put-targets--cli-input-jsonfile://target.json給出JSON語法錯誤
