我正在尝试将我拥有的数据集(原始数据的子集)中的参考线添加到原始数据的散点图中。我不确定我做错了什么。重点是将 SCS-MP2 作为参考线,将其他观测值作为点,使用 In 与 BE 来查看与参考的偏差有多大。
我在 R/RStudio 中使用了以下代码:
#Load Packages
library(ggplot2); install.packages("car");
library(readxl);
library(datasets);
library(tidyr);
################# BE Results
cg <- read_excel("ReultsAllTogether_stacks.xlsx")
View(cg)
structure(cg)
cg$`BE` <- as.double(cg$`BE`)
scs_mp2 <- cg[which(cg$Functional == 'SCS-MP2'),]
structure(scs_mp2)
be_cg <- ggplot(cg, aes(x=factor(cg$In, level=c("Li", "Na", "K", "Rb", "Cs")), y=cg$`BE`, group=cg$Class))
be_cg <- be_cg + geom_point(aes(color=cg$Functional))
be_cg <- be_cg + facet_grid(cg$Basis~cg$Class) + labs(x = "In", y = "BE", color = "Class Type")
be_cg <- be_cg + geom_line(aes(cg$Functional == 'SCS-MP2', color = 'pink'))
print(be_cg)
我最终得到了下图:
数据集 -
dput()
输出:
structure(list(Functional = c("B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2",
"B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP",
"SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2",
"B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP",
"SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2",
"B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP",
"SCS-MP2"), Basis = c("b1", "b1", "b1", "b1", "b1", "b1", "b1",
"b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1",
"b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1",
"b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1"
), Class = c("C2", "C2", "C2", "C2", "C2", "C2", "C2", "C2",
"C2", "C2", "C3", "C3", "C3", "C3", "C3", "C3", "C3", "C3", "C3",
"C3", "C4", "C4", "C4", "C4", "C4", "C4", "C4", "C4", "C4", "C4",
"C5", "C5", "C5", "C5", "C5", "C5", "C5", "C5", "C5", "C5"),
In = c("Li", "Li", "Na", "Na", "K", "K", "Rb", "Rb", "Cs",
"Cs", "Li", "Li", "Na", "Na", "K", "K", "Rb", "Rb", "Cs",
"Cs", "Li", "Li", "Na", "Na", "K", "K", "Rb", "Rb", "Cs",
"Cs", "Li", "Li", "Na", "Na", "K", "K", "Rb", "Rb", "Cs",
"Cs"), CT = c(0.40456288154279, 0.372834665210701, 0.355454014133149,
0.313462952666224, 0.304072955130357, 0.251637090727318,
0.28181198329498, 0.222999362898535, 0.254776916782981, 0.194195055958677,
0.404186306229368, 0.37268736669808, 0.354997616399174, 0.31330968123421,
0.30365432465555, 0.251510008485998, 0.281443473835977, 0.222902895704843,
0.254511080266118, 0.194137507673419, 0.401871772097766,
0.370918519253672, 0.351142910239732, 0.310714862030015,
0.298069757042778, 0.247839120659505, 0.274977651015282,
0.218806234600371, 0.274977651015282, 0.218806234600371,
0.407912189945616, 0.376388091732588, 0.360278099029074,
0.31813744101535, 0.309981024667932, 0.257480792559644, 0.288133014562052,
0.229128691213999, 0.461803504626895, 0.337946512062839),
BE = c(-18.8252999999829, -21.1847940758919, -0.627509999985161,
-0.788704768746296, 2.51003999994065, -1.06039777353009,
3.12642801277324, -1.1722263305953, NA, NA, -25.1003999999772,
-28.4270313132134, -20.0803199999532, -23.0303260862894,
-16.3152600000422, -21.3725136924209, -14.4327300000154,
-19.2799058945922, -11.9226900000034, -18.1946901005642,
-27.6104399999892, -31.334467121123, -28.8654600000308, -32.3045724807506,
-15.0602400000719, -21.3828236816955, -11.9226900000748,
-17.9596938806561, -5.64759000008047, -16.4690752511992,
-20.0803200000245, -23.5808468844384, -23.8453800000068,
-34.772600686251, -25.727910000105, -33.2706429510877, -23.217870000093,
-29.9168843805051, -20.707830000081, -29.0829361406804)), row.names = c(NA,
-40L), class = c("tbl_df", "tbl", "data.frame"))
解决一些问题的一个解决方案:
geom_line()
cg$
pink
着色,它应该位于aes()
调用之外library(ggplot2)
cg$BE <- as.double(cg$BE)
scs_mp2 <- cg[which(cg$Functional == "SCS-MP2"), ]
be_cg <- ggplot(
cg,
aes(x = factor(In, level = c("Li", "Na", "K", "Rb", "Cs")),
y = BE,
group = Class)
) +
geom_point(aes(color = Functional)) +
facet_grid(Basis ~ Class) +
labs(x = "In", y = "BE", color = "Class Type") +
geom_line(data = scs_mp2, color = "pink")
be_cg
您可能还想对数据进行子集化,因为您不希望
"SCS-MP2"
值也绘制为点和线。