簡體   English   中英

我正在嘗試在R中重新創建一個特定的圖(ggplot2)

[英]I'm trying to recreate a specific plot in R (ggplot2)

盡管已嘗試過多種類型的線,但我無法得到相同的結果。 以下是我需要線條的方式:

原始情節

這就是我到目前為止得到它的方式(我堅持): 我的情節版本

這是我的代碼:

myData <- read.csv(file.choose(), header = TRUE)
require(ggplot2)
g <- ggplot(myData, aes(speed, resp))
g + geom_point(aes(color = padlen, shape = padlen)) +
geom_smooth(method = "lm", formula = y ~ splines::bs(x, df = 4, degree = 2), se = FALSE, aes(color = padlen), linetype = "solid", size = 1) +
scale_color_manual(values = c("red", "black")) +
scale_shape_manual(values = c(2, 1))

這是數據庫(dput):

myData <- structure(list(resp = c(0, 0.125, 0.583333333, 1, 0.958333333, 
1, 0, 0.041666667, 0.25, 0.916666667, 1, 1), padlen = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("big", 
"small"), class = "factor"), speed = c(2L, 3L, 4L, 5L, 6L, 7L, 
2L, 3L, 4L, 5L, 6L, 7L)), .Names = c("resp", "padlen", "speed"
), class = "data.frame", row.names = c(NA, -12L))

我也嘗試了所有這些多項式模型(和其他),但沒有一個工作:

## Quadratic model
lmQuadratic <- lm(formula = y ~ x + I(x^2),
                  data    = fpeg)
## Cubit model
lmCubic <- lm(formula = y ~ x + I(x^2) + I(x^3),
              data    = fpeg)
## Fractional polynomial model
lmFractional <- lm(formula = y ~ x + I(x^2) + I(x^(1/2)),
                   data    = fpeg)

那么,我應該做什么/不做什么來讓我的線條與原來的線條相同? 謝謝。

而不是在geom_smooth中使用method = "lm"而是使用帶有二項式族的glm glm -smooth只給出0到1之間的值(你想要的是什么,因為你正在處理比例)。

library(ggplot2)

ggplot(myData, aes(speed, resp)) + 
  geom_point(aes(color = padlen, shape = padlen)) +
  geom_smooth(method = "glm", method.args = list(family = "binomial"), 
              se = FALSE, aes(color = padlen), linetype = "solid", size = 1) +
  scale_color_manual(values = c("red", "black")) +
  scale_shape_manual(values = c(2, 1)) +
  theme_classic()

在此輸入圖像描述

數據

myData <- 
  structure(list(resp = c(0, 0.125, 0.583333333, 1, 0.958333333, 1, 0, 
                          0.041666667, 0.25, 0.916666667, 1, 1), 
                 padlen = c("small", "small", "small", "small", "small", 
                            "small", "big", "big", "big", "big", "big", "big"), 
                 speed = c(2L, 3L, 4L, 5L, 6L, 7L, 2L, 3L, 4L, 5L, 6L, 7L)), 
            .Names = c("resp", "padlen", "speed"), class = "data.frame", 
            row.names = c(NA, -12L))

暫無
暫無

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

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