在ggplot2中,如何在同一轴上增加相似类别的刻度间距并减少不同类别的间距?

sid*_*sid 1 r ggplot2

我使用此处显示的数据在 ggplot2 中创建了图表:

\n\n
  Categories       A1       A2       A3       A4       A5\n1       XX_1   41.151   61.017   67.639     94.6  137.643\n2       XX_2  93.4175 127.4735    141.9  153.252  180.213\n3       YY_1 160.5835  169.807  166.969 169.5705   184.47\n4       YY_2  171.226 184.7065 194.1665 187.0715  218.526\n5       ZZ_1  83.4845   97.438   122.98 127.4735 140.7175\n6       ZZ_2 126.5275  139.535  140.954  157.982  183.524\n8       LL_1   81.829   72.842  67.8755    56.76   48.246\n9       LL_2   58.652   52.976  41.8605   32.164  31.9275\n
Run Code Online (Sandbox Code Playgroud)\n\n

从数据中可以看到,有三组类似的类别\xe2\x80\x94XX、YY、ZZ、LL。这些类别还有两个细分——_1 和_2。当我绘制数据时,所有类别都以彼此等距绘制,如此处的图表所示

\n\n

在此输入图像描述

\n\n

但是,我希望类似的类别(如 LL_1 和 LL_2)彼此更接近,并且不同对(如 XX 、 ZZ、YY 和 YY )之间的空间增加。我不希望所有类别彼此等距。我想自定义更改相似和不相似类别的距离。如此处粗略的图表 1 所示:

\n\n

在此输入图像描述

\n\n

我也不想使用facet_wrap,并且希望所有数据都显示在同一个图表中。如果有人可以指导如何解决这个问题,我将非常感激。

\n\n

下面是我用来绘制图表的代码:

\n\n
##Loading the excel data\ndf <- read_excel("~\\Sample.xlsx")\n\n##Converting from wide to long format\ndf1 <- melt(df, id.vars = "Categories", measure.vars = c("A1", "A2", "A3", "A4", "A5"), variable.name = "AA", value.name = "values")\n\ndf1 <- df1[order(df1$Categories), ]\n\n##Plotting the data\np6 <- ggplot(data = df1, mapping = aes(x=values, y=Categories))\np6 + geom_line(color="brown", size=0.1)+ geom_point(aes(color=AA), size=0.5)+\n  theme(axis.title.y = element_blank(), axis.text = element_text(face = "bold"),axis.text.y = element_text(size = 2.2),\n        axis.text.x = element_text(size = 2.2), axis.title.x = element_text(size = 2.5), axis.line.x = element_line(size = 0.2), axis.line.y = element_line(size = 0.2),\n        axis.ticks = element_line(size = 0.2),axis.ticks.length = unit(0.03, "cm"),\n        legend.key = element_blank(), legend.spacing.y = unit(0.05, "cm"), legend.key.size = unit(0.2, "cm"),\n        legend.title = element_text(face = "bold", size = 2.5),legend.text = element_text(size = 2), panel.background = element_blank(), panel.grid.major = element_blank(),\n        panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"), panel.border = element_blank())+ \n  scale_x_continuous(breaks=seq(0,220,5))+\n  labs(x="Number", color="Category")\n\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢

\n

teu*_*and 5

要获取自定义分类 y 轴,您可以使用连续值作为 y 轴值,然后为 y 轴设置自定义分隔符和标签。这里的例子:

library(ggplot2)

df <- data.frame(
  cat = c("AA_1", "AA_2", "BB_1", "BB_2", "CC_1", "CC_2"),
  catval = c(1,2,4,5,7,8),
  value = rnorm(6)
)

ggplot(df, aes(value, catval)) +
  geom_point() +
  scale_y_continuous(breaks = df$catval, 
                     labels = df$cat)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述