我如何在 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()
例如,对于线条,您应该在其他图层中添加段和文本。
我需要为地球化学分析绘制概率图(以对数标度表示的累积与元素浓度),如图所示:
我已经尝试在 '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()
例如,对于线条,您应该在其他图层中添加段和文本。