我如何在 R 中制作这样的图表?

How can I make a graph like this in R?

我需要为地球化学分析绘制概率图(以对数标度表示的累积与元素浓度),如图所示:

.

我已经尝试在 'qualityTools' 包中使用 ppPlot 和 'log-normal' 参数,但对于某些元素它不起作用。它说我需要对数正态分布的正值,但它们都是正值,我已经检查过了。我认为该命令在 base R 中使用了 'density' 函数,其密度模型无意中产生了负浓度值。 base R 中的 'qqnorm' 命令会生成不同类型的图。

我该如何解决这个问题?

编辑:这是我的镁数据的一部分(我需要用它们生成类似的图表):

    mg <- c(51.400, 149.000, 276.000, 135.000, 179.000,  81.000, 116.000,   8.150,   7.770,   7.870,   8.840,  15.600,  13.400,
  57.400,   7.440,  14.800,  40.800,  15.100,  21.400,   5.550,   3.390,  18.800,  20.100,  19.600,  11.600,  11.700,
  12.200,  12.500,  11.700,  12.100,  13.000,  12.300,  13.300,  13.200,  12.600,  29.700,  25.400,  21.000,  11.100,
  11.500,  11.000,  32.600,  17.500,  16.500,  18.100,  27.200,  21.200,  26.400,  18.800,  19.900,  32.000,  28.600,
  29.400,  30.700,   2.370,   2.070,   1.850,   1.970,  24.900,  19.100,  17.400,  23.100,  50.100,  48.800,  18.000,
   15.800,  27.100,  43.500,   4.820,  13.400,  14.600,  24.100,  22.700,  22.500,  43.500,  41.300,  43.700,  41.100,
    40.800,  63.700,   7.700,   8.360,  60.000,  58.400,  63.100,  65.100, 219.000,  25.800,   4.940,   3.670,  13.800,
   5.190,  14.700,  15.000,  13.100,  12.300,  10.700,  10.700,  11.100,  10.100,  10.600,  63.200,  19.800,  22.200,
  17.600,  11.500,  10.600,   9.380,   3.190,   9.180,  10.800, 189.000, 190.000, 152.000, 119.000, 194.000,  56.100)

这是我的解决方案,但我必须用随机数创建一个新的孔数据框:

ggplot()+
  geom_point(data=N,aes(x=Prob,y=AS))+
  scale_x_log10(breaks=c(0.1,1,5,20,50,80,95,99,99.9))+
  scale_y_log10(expand=c(0,0),
breaks=c(seq(0.01,0.1,0.01),seq(0.2,1,0.1),seq(2,10,1)))+
  ylab(paste("As(","\U00B5","g/l)"))+ xlab("Cummulative probability (%)")+
 theme_bw()+annotation_logticks()

例如,对于线条,您应该在其他图层中添加段和文本。