我使用此处显示的数据在 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\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n\n谢谢
\n要获取自定义分类 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)