我有一個包含以下列的資料框:
library(dplyr)
mig_tend <- rep(c("Resident","Migrant", "Unknown"), 100)
pred_observed <- runif(length(mig_tend), min = -0.04270965, max = 0.01783518)
weighted_ <- runif(length(mig_tend), min = 3.648399e-07, max = 0.002123505)
scaled_PDSI <- runif(length(mig_tend), min = -0.842694, max = 1.957527)
pdsi <- runif(length(4), min = -2, max = 2)
y <- runif(length(4), min = -0.00613618, max = -0.002790441)
df1 <- data.frame(mig_tend = as.factor(mig_tend),
pred_observed = pred_observed,
weighted = weighted_,
scaled = scaled_PDSI
)
我正在嘗試創建一個圖,其中點的大小根據weighted該特定點的值而變化。我希望當 的值weighted較大時該點較小,而當 的值較小時該點較大weighted。
reprex <- df1 %>%
# Plot against PDSI
ggplot(aes(x = scaled, col = as.factor(mig_tend)))
# geom_hline(yintercept = 0, linetype = 2, col = "grey")
# add in predictions
geom_point(aes(y = pred_observed, size = weighted))
scale_size_continuous(range = c(0.01, 0.2))
labs(col = "", fill = "", size = "Weights",
y = "Predicted_Observation",
x = "PDSI")
theme_bw()
theme(plot.title = element_text(hjust = 0.5),
legend.position = "right")
uj5u.com熱心網友回復:
最簡單的方法可能是使用負值,然后調整名稱和標簽以撤消它:
geom_point(aes(y = pred_observed, size = -weighted))
scale_size_continuous(range = c(0.01, 1.2),
labels = ~scales::comma(x = -.x),
name = "weighted")

或者,您可以查看倒數,盡管這對于突出較小值的資料可能過于極端。在下面的示例中,使用 更加強調了這一點scale_size_area,但這樣做的好處是尺寸值更直接地映射到我們的感知 - 即在這種情況下,它顯示了您必須用多少“稀釋”一個單位得到底層數字。
geom_point(aes(y = pred_observed, size = 1/weighted))
scale_size_area(max_size = 10,
breaks = c(10000, 100000, 500000),
labels = ~paste0("1/", scales::comma(x = .x)),
name = "weighted")

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/495182.html
