在ggplot r中将轴刻度留空以进行空白处理

时间:2019-07-13 07:30:34

标签: ggplot2 label scale boxplot

我有一堆具有19种处理方式的dfs,我正在绘制这些子集。试图弄清楚如何为图中的所有19种处理保留列,即使它们没有在该特定图中绘制的值也是如此。下面是可重现的较小示例。

    #include <stdio.h>
    #include <stdlib.h>
    #define max 100

    int main()
     {
    int n,m,i,j,t,k;
    int A[max][max];
    int B[max][max];
    int C[max][max];


    printf("enter number of rows and columns: ");
    scanf("%d%d",&m,&n);
    t=m*n;

    int *ptr1[t];
    int *ptr2[t];
    int *ptr3[t];


    printf("elements of matrix 1:\n");
    for(k=0,i=0;i<m;i++)
   {
       for(j=0;j<n;j++,k++)
       {
           scanf("%d",&A[i][j]);
           ptr1[k]=&A[i][j];

       }
   }

   printf("elements of matrix 2:\n");
   for(k=0,i=0;i<m;i++)
   {
       for(j=0;j<n;j++,k++)
       {
           scanf("%d",&B[i][j]);
           ptr2[k]=&B[i][j];
       }
   }
   for(k=0,i=0;i<m;i++)
   {
       for(j=0;j<n;j++,k++)
       {
           ptr3[k]=&C[i][j];
       }
   }


   for(i=0;i<t;i++)
   {
       *ptr3[i]=*ptr1[i]+*ptr2[i];
        //can the above line be represented as...
        //*(ptr3+i)=*(ptr1+i)+*(ptr2+i);

   }
   k=0;
   printf("THEIR SUM IS:\n");
   for(i=0;i<t;i++)
   {
     printf("%d ",*ptr3[i]);
     k++;
     if(k==n)
     {
        printf("\n");
        k=0;
     }
   }
}

看看为什么只有A,B,C,E列?如何确保它为D留下一列?另外,我还需要它跳过颜色,因此在所有不同的图中,A,B,C,D和E始终是一致的颜色。

(最好将子集代码放入ggplot()框中,这样我就不必一遍又一遍地写这些子集了。)

我尝试添加

 set.seed(3)
 df <- data.frame(matrix(ncol=2,nrow=200))
 df$X1 <- rep(c("A","B","C","D","E"),each = 40)
 df$X2 <- runif(200,20,50)

 ggplot(df,aes(x=X1,y=X2,color=X1))+
 geom_dotplot(binaxis="y",data= df[df$X2>48,])+
 geom_boxplot(data=df[df$X2>48,],varwidth = T)

作为一行,但没有改变。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在主ggplot()调用中子集数据。可以手动设置x轴和颜色的限制:

fullvar <- unique(df$X1)

ggplot(df[df$X2 > 48,],aes(x=X1,y=X2,color=X1))+
  geom_dotplot(binaxis="y")+
  geom_boxplot(varwidth = T) +
  scale_x_discrete(limits = fullvar) +
  scale_color_discrete(limits = fullvar)

enter image description here

编辑:忽略了颜色问题。