R 如何使用绘图函数使我的绘图更平滑?

R 如何使用绘图函数使我的绘图更平滑?,r,ggplot2,plot,visualization,R,Ggplot2,Plot,Visualization,这是我的代码和最终的图形结果。但我不知道如何使这条线更平滑。有什么建议吗?我尝试了黄土和样条曲线,但我不知道如何将它们应用到我的代码中 p2 <- seq(.1587, .18144, .00756) np2 <- length(p2) power <- seq(.4, .9, .1) npower <- length(power) samsize <- array(numeric(np2*npower), dim = c(np2,npower)) for (i

这是我的代码和最终的图形结果。但我不知道如何使这条线更平滑。有什么建议吗?我尝试了黄土和样条曲线,但我不知道如何将它们应用到我的代码中

p2 <- seq(.1587, .18144, .00756)
np2 <- length(p2)
power <- seq(.4, .9, .1)
npower <- length(power)
samsize <- array(numeric(np2*npower), dim = c(np2,npower))
  for (i in 1:npower){
    for (j in 1:np2){
      result <- power.prop.test(n = NULL, p1 =.1511, p2 = p2[j], 
                                sig.level = .05, power = power[i],
                                alternative = c("two.sided","one.sided"),
                                strict = FALSE, tol = .Machine$double.eps^.25)
        samsize[j,i] <- ceiling(result$n)
      }
    }

    xrange <- range(p2)
    yrange <- round(range(samsize))
    colors <- rainbow(length(power))
    plot(xrange, yrange, type = "n",
         xlab = "Target Percentage (p2)",
         ylab = "Sample Size (n)")

    for (i in 1:npower){
      lines(p2, samsize[,i], lwd = 2, col=colors[i])
    }

    abline(h=seq(0,50000,5000), v=seq(xrange[1],xrange[2], .002),lty=20,col="gray89")
    title("Sample Size Estimation for Proportion Test")
    legend("topright", title= "Power", as.character(power),
           fill=colors)

p2您可以增加计算样本量的
p2
的点数

例如,如果设置


p2您可以增加计算样本量的
p2
的点数

例如,如果设置


p2您只需要将数组转换为ggplot可以处理的数据帧。然后你可以使用geom_平滑

df <- data.frame(samsize)
colnames(df) <- as.character(power)

df <- tidyr::gather(df)
df$p2 <- p2

ggplot() + 
  geom_smooth(data=df, aes(x=p2, y=value, color=key)) +
  scale_color_discrete(name = 'Power') +
  labs(x = 'Target Percentage (p2)', y = 'Sample Size (n)', title="Sample Size Estimation for Proportion Test") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5))

df您只需要将数组转换为ggplot可以处理的数据帧。然后你可以使用geom_平滑

df <- data.frame(samsize)
colnames(df) <- as.character(power)

df <- tidyr::gather(df)
df$p2 <- p2

ggplot() + 
  geom_smooth(data=df, aes(x=p2, y=value, color=key)) +
  scale_color_discrete(name = 'Power') +
  labs(x = 'Target Percentage (p2)', y = 'Sample Size (n)', title="Sample Size Estimation for Proportion Test") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5))

df不确定您为什么希望此类型的图表具有平滑的线条,但可以在
ggplot2
中使用例如
geom_smooth
。不确定您为什么希望此类型的图表具有平滑的线条,但可以在
ggplot2
中使用例如
geom_smooth
。谢谢!天哪,谢谢你!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!泰!