我正在进行一项研究,我想让我们用ggplot2中的facet_grid来显示结果.

我的测试数据可以在这里找到text

数据有六列:AusFall Rate(MissingRate)、PFC_MCA、PFC_HEAT、PFC_MODE、AnzahlI(I的数量)、AnzahlJ(J的数量) 我需要将变量PFC_MCA、PFC_HOT、PFC_MODE绘制为MissingRate的x值上的y值(用连接的线绘制散点图). AnzahlI和AnzahlJ各有3个级别,因此有9个可能的组合,并被用作刻面.我必须用facet_grid来绘制9个组合中每一个的散点图.

This is basically the outcome I´m looking for. (The actual data in my testdate is identical for all 9 combinations, so the plots are identical) enter image description here

这样做的问题是我不能得到ggplot2来打印图例. 此图是使用以下命令创建的

p<-2.5    #PointSize
lineweight<-0.8  #Lineweight
ggplot(test_outputdata,
        aes(x=Ausfallrate))+
        
        geom_point(aes(y=PFC_MCA),color="red",pch=15,cex=p)+
        geom_line(aes(y=PFC_MCA), color="red",linetype="solid",lwd=lineweight) + 
        
        geom_point(aes(y=PFC_Hot),color="blue", pch=16,cex=p)+
        geom_line(aes(y=PFC_Hot), color="blue",linetype="dashed",lwd=lineweight) +
        
        geom_point(aes(y=PFC_Mode),color="black",pch=17,cex=p)+
        geom_line(aes(y=PFC_Mode), color="black",linetype="dotdash",lwd=lineweight) +
        
        facet_grid(AnzahlJ~AnzahlI,
                     #Umbenennen bzw richtig schreiben der Labels
                     labeller = labeller(
                       AnzahlJ = c(`3` = "J=3", `6` = "J=6", `10` = "J=10"),
                       AnzahlI= c(`100` = "I=100", `500` = "I=500", `1000` = "I=1000"),
                       
                    )
                  )+
        labs(y= "PFC")+
        ggtitle("MCAR")

我发现这和aes()的功能有关.让我们暂时忽略形状、标签和线宽,专注于 colored颜色 .如果我将COLOR语句放在aes()呼叫中,如下所示:

ggplot(test_outputdata,
        aes(x=Ausfallrate))+
        
        geom_point(aes(y=PFC_MCA,color="red"))+
        geom_line(aes(y=PFC_MCA,color="red")) + 
        
        geom_point(aes(y=PFC_Hot,color="blue"))+
        geom_line(aes(y=PFC_Hot),color="blue") +
        
        geom_point(aes(y=PFC_Mode,color="black"))+
        geom_line(aes(y=PFC_Mode,color="black")) +
        
        facet_grid(AnzahlJ~AnzahlI)

The result now looks like this enter image description here

很好,我有个传奇.但不管是什么原因, colored颜色 不对,应该是黑色的线是红色的,等等. 我也想不出如何以这种方式调整点形状或线宽. 我发现我应该能够使用geom_point()内部的shape=18来更改点数.这在某种程度上是可行的(在aes()号楼外).问题是,它像预期的那样改变了情节中的符号,但在图例中它改变了所有的点.

所有我想要实现的是一个工作的图例,并能够指定 colored颜色 ,点符号,符号和线条的大小和线型. 我也试着找here个,但没有一个对我真正有意义.

拜托,有谁能帮忙吗? 非常感谢

推荐答案

在你的问题中有相当多的"要求更改",我已经尽了最大努力来解决它们,但如果你想做进一步的调整(你自己也搞不清楚),请随时在下面发表 comments ,我会看看的.

我使用的方法是基于tidyverse library中的函数:

加载tidyVerse包和示例数据:

library(tidyverse)

df <- read.table(text = "Ausfallrate    PFC_MCA PFC_Hot PFC_Mode    AnzahlI AnzahlJ
0,1 0,2 0,1 0,2 100 3
0,2 0,25    0,15    0,3 100 3
0,3 0,3 0,2 0,4 100 3
0,4 0,35    0,25    0,5 100 3
0,5 0,4 0,3 0,6 100 3
0,1 0,2 0,1 0,2 100 6
0,2 0,25    0,15    0,3 100 6
0,3 0,3 0,2 0,4 100 6
0,4 0,35    0,25    0,5 100 6
0,5 0,4 0,3 0,6 100 6
0,1 0,2 0,1 0,2 100 10
0,2 0,25    0,15    0,3 100 10
0,3 0,3 0,2 0,4 100 10
0,4 0,35    0,25    0,5 100 10
0,5 0,4 0,3 0,6 100 10
0,1 0,2 0,1 0,2 500 3
0,2 0,25    0,15    0,3 500 3
0,3 0,3 0,2 0,4 500 3
0,4 0,35    0,25    0,5 500 3
0,5 0,4 0,3 0,6 500 3
0,1 0,2 0,1 0,2 500 6
0,2 0,25    0,15    0,3 500 6
0,3 0,3 0,2 0,4 500 6
0,4 0,35    0,25    0,5 500 6
0,5 0,4 0,3 0,6 500 6
0,1 0,2 0,1 0,2 500 10
0,2 0,25    0,15    0,3 500 10
0,3 0,3 0,2 0,4 500 10
0,4 0,35    0,25    0,5 500 10
0,5 0,4 0,3 0,6 500 10
0,1 0,2 0,1 0,2 1000    3
0,2 0,25    0,15    0,3 1000    3
0,3 0,3 0,2 0,4 1000    3
0,4 0,35    0,25    0,5 1000    3
0,5 0,4 0,3 0,6 1000    3
0,1 0,2 0,1 0,2 1000    6
0,2 0,25    0,15    0,3 1000    6
0,3 0,3 0,2 0,4 1000    6
0,4 0,35    0,25    0,5 1000    6
0,5 0,4 0,3 0,6 1000    6
0,1 0,2 0,1 0,2 1000    10
0,2 0,25    0,15    0,3 1000    10
0,3 0,3 0,2 0,4 1000    10
0,4 0,35    0,25    0,5 1000    10
0,5 0,4 0,3 0,6 1000    10", header = TRUE)

创建曲线图:

df %>%
  mutate(across(where(is.character),
                ~parse_number(.x, locale = locale(decimal_mark = ",")))) %>%
  pivot_longer(-c(Ausfallrate, AnzahlJ, AnzahlI),
               names_to = "Type",
               values_to = "PFC") %>%
  mutate(Type = factor(Type, levels = c("PFC_Hot", "PFC_Mode", "PFC_MCA"))) %>%
  ggplot(aes(x = Ausfallrate, y = PFC,
             group = Type, color = Type,
             shape = Type)) +
  geom_point() +
  geom_line() +
  facet_grid(rows = vars(AnzahlJ), cols = vars(AnzahlI),
             labeller = labeller(
               AnzahlJ = c(`3` = "J=3", `6` = "J=6", `10` = "J=10"),
               AnzahlI= c(`100` = "I=100", `500` = "I=500", `1000` = "I=1000")
  )) +
  scale_color_manual(values = c("blue", "black", "red"),
                     labels = c("PFC_Hot", "PFC_Mode", "PFC_MCA")) +
  scale_shape_manual(values = c(1, 15, 18),
                     labels = c("PFC_Hot", "PFC_Mode", "PFC_MCA"))

创建于2023-05-19年第reprex v2.0.2

R相关问答推荐

R -模运算后的加法

无法运行通过R中的Auto.arima获得的ARIMA模型

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

如何按排序顺序打印一个框架中所有精确的唯一值?

如何从当前行上方找到符合特定条件的最接近值?

用关联字符串替换列名的元素

如何在观测缺失的地方添加零

多个模拟序列间的一种预测回归关系

仅在Facet_WRAP()中的相应方面包含geom_abline()

如何根据数据帧中的值从该数据帧中提取值?

使用R中的dist()迭代ID匹配的欧几里德距离

将全局环境变量的名称分配给列表中的所有元素

SHILINY中DT列的条件着色

在shiny 表格中输入的文本在第一次后未更新

重写时间间隔模糊连接以减少内存消耗

从矩阵创建系数图

R,将组ID分配给另一个观测ID变量中的值的组合

汇总数据:在跨越()all_of()Dynamic_list_of_vars=>;所选内容不能有缺失值的汇总()中出错

Package emMeans:如果emmip模型中包含的变量较少,emMeans模型中的其他变量设置为什么?

通过分析特定列中的字符串在数据框中创建新的行和列