У меня есть кадр данных с строками, содержащими заголовки публикаций журналов, значениями и указанием, является ли это normal
или точкой данных highlight
. Я хочу, чтобы график сохранял порядок кадра данных. Следующий код создает неравномерно расположенную ось y.ggplot2 scale_x_discrete значение, вызывающее неравномерное расстояние оси
require(ggplot2)
title <- c("COGNITION","MUTAT RES-DNA REPAIR","AM J PHYSIOL-CELL PH","AM J PHYSIOL-CELL PH","BLOOD",
"PNAS","BIOCHEM BIOPH RES CO","CLIN CANCER RES","BIOCHEM BIOPH RES CO","MOL THER")
value <- c(-0.428, -0.637, -0.740, -0.782, -0.880, -1.974, -1.988, -2.029, -2.217, -2.242)
indicator <- c(rep("highlight",5), rep("normal",5))
df <- data.frame(title, value, indicator)
mycolors <- c("highlight" = "blue", "normal" = "red")
x_axis_range <- c((min(df$value)), (max(df$value)))
p <- ggplot(df, aes(x = title, y = value)) +
geom_point(aes(size=3, color=indicator)) +
coord_flip() +
scale_color_manual(values=mycolors) +
scale_y_continuous(limit=x_axis_range) +
# produces uneven spacing
scale_x_discrete(limits=df$title) +
theme(legend.position="none")
show(p)
Я не знаю, почему ggplot добавляет дополнительное пространство между MOL THER
и CLIN CANCER RES
и между BLOOD
и AM J PHYSIOL-CELL PH
точек данных. Когда я изменить scale_x_discrete()
строку:
scale_x_discrete(limits=df$title.1) +
Это расстояние становится еще, но порядок данных изменяется на в алфавитном порядке по названию снизу-вверх.
Почему добавление .1
к концу limits=df$title
даже из расстояния? Как я могу сохранить эту четность и по-прежнему управлять порядком данных по оси Y с помощью функции order()
?
Отлично! Отличный ответ. – tn3rt