Мне очень нравится пакет ggplot2, но часто сталкиваются с основными проблемами, которые останавливают меня в течение многих часов. У меня есть куча объектов ggplot из предыдущих симуляций, которые я хочу изменить внешний вид (форма, альфа, цвет, размер), а не повторять симуляции. Здесь много похожих вопросов в stackoverflow, но все они немного разные, и я еще не смог извлечь общие знания, чтобы легко создавать графики. Я счастлив, если кто-то может указать мне в правильном направлении.Изменение формы, размера, цвета в объектах ggplot
Графики были созданы с кодом, эквивалентным это:
ggplot(data=df) + geom_point(aes(x=Test, y=Val, ymax=max(Val), group=State, colour=State), shape=20, position=position_dodge(.5), alpha=1/2)
Вот воспроизводимый пример:
require(ggplot2)
# Create some data.
state <- c(TRUE,FALSE)
effect <- c(0.5, 1.0)
test <- c("A","B")
# Create combinations.
df <- expand.grid(Test=test, State=state, Effect=effect)
# Add some values.
df$Val <- rnorm(nrow(df))
# The plots were created this way.
gp <- ggplot(data=df) + geom_point(aes(x=Test, y=Val, ymax=max(Val), group=State, colour=State), shape=20, position=position_dodge(.5), alpha=1/2)
gp <- gp + facet_wrap(~ Effect)
gp <- gp + theme_bw()
print(gp)
# Change colours and re-order legend works.
cols <- c("TRUE" = "red","FALSE" = "blue")
gp <- gp + scale_colour_manual(values = cols, breaks = c("TRUE", "FALSE")) # Change and re-order legend.
print(gp)
# Change 'shape', 'size' or 'alpha' this way does not work.
cols <- c("TRUE" = 1,"FALSE" = 3)
gp <- gp + scale_shape_manual(values=cols, breaks = c("TRUE", "FALSE"))
print(gp)
cols <- c("TRUE" = 5,"FALSE" = 10)
gp <- gp + scale_size_manual(values=cols, breaks = c("TRUE", "FALSE"))
print(gp)
cols <- c("TRUE" = 1,"FALSE" = 1/5)
gp <- gp + scale_alpha_manual(values=cols, breaks = c("TRUE", "FALSE"))
print(gp)
Возможно, я должен был создать участки по-разному? Любые комментарии приветствуются. Я обнаружил, что если я указываю «форму» внутри «ИСЗ», я могу изменить форму, но не без проблем:
# Put shape inside aes.
gp <- ggplot(data=df) + geom_point(aes(x=Test, y=Val, ymax=max(Val), group=State, colour=State, shape=State), position=position_dodge(.4), alpha=1/2)
gp <- gp + facet_wrap(~ Effect)
gp <- gp + theme_bw()
print(gp)
# Change colours and re-order legend this way works (but adds another legend).
cols <- c("TRUE" = "red","FALSE" = "blue")
#gp <- gp + scale_colour_manual(values = cols) # Changes colour.
gp <- gp + scale_colour_manual(values = cols, breaks = c("TRUE", "FALSE")) # Changes colour, but adds a second legend when re-ordered.
print(gp)
# Try to change shape.
cols <- c("TRUE" = 1,"FALSE" = 3)
gp <- gp + scale_shape_manual(values=cols, breaks = c("TRUE", "FALSE")) # Back to one legend, but 'FALSE' does not have a symbol.
print(gp)
# Change 'size' etc. this way does not work.
cols <- c("TRUE" = 5,"FALSE" = 10)
gp <- gp + scale_size_manual(values=cols, breaks = c("TRUE", "FALSE"))
print(gp)
ДФ $ Val <- RNorm (nrow (гребень)) ясно, что гребень –
К сожалению, 'гребенка' должно быть 'df' для генерации чисел. Теперь изменилось. –