Hello,
OK, now I understand the problem better. What is the variable defining
the points colors? Without a mapping to an aesthetic, there will be no
legend. In what follows I map color = Sample and the legend shows up.
Then scale_color_manual can change the colors.
Is this it?
palette("Tableau 10")
tablePal <- palette()
ggplot() +
geom_col(
data=test,
aes(x=Sample, y=value, fill=SSAtype),
position="dodge"
) +
geom_pointrange(
data=test.ag,
aes(x=Sample, y=avg, ymin=avg-odch, ymax=avg+odch, color = Sample),
size = 2
) +
scale_fill_manual(
values=tablePal,
name="Calculation\n performed\n according to",
labels=c("bla", "blabla")
) +
guides(fill = guide_legend(override.aes = list(shape = NA))) +
scale_shape_manual(name = "Measured", values = 19, labels = NULL) +
scale_color_manual(values = tablePal[3:5])
Hope this helps,
Rui Barradas
?s 13:21 de 16/05/2022, PIKAL Petr escreveu:> Hallo Rui
>
> Thanks. After I sent the first mail I noticed the missing tablePal.
>
> palette("Tableau 10")
> tablePal <- palette()
>
> ggplot() +
> geom_col(
> data=test,
> aes(x=Sample, y=value, fill=SSAtype),
> position="dodge"
> ) +
> geom_pointrange(
> data=test.ag,
> aes(x=Sample, y=avg, ymin=avg-odch, ymax=avg+odch),
> size = 2
> ) +
> scale_fill_manual(
> values=tablePal,
> name="Calculation\n performed\n according to",
> labels=c("bla", "blabla")
> ) +
> scale_shape_manual(name = "Measured", values = 19, labels =
NULL)
>
> You are correct that legend for bars is there. But the legend for points is
missing. If I use only geom_point and values from the "test" data,
also legend for the point appears. Is it possible that the second legend could
be created only if all data are from one data frame?
>
> Best regards
> Petr
>
>> -----Original Message-----
>> From: Rui Barradas <ruipbarradas at sapo.pt>
>> Sent: Monday, May 16, 2022 1:53 PM
>> To: PIKAL Petr <petr.pikal at precheza.cz>; r-help at
r-project.org
>> Subject: Re: [R] ggplot pointrange from other df and missing legend
>>
>> Hello,
>>
>> In the code below the legend is not missing, I couldn't reproduce
that error.
>> As for the size of the points, include argument size. I have size=2.
>>
>> Also:
>> - tablePal is missing, I've chosen colors 2:3;
>> - I have commented out the guides(.), you are setting the shape
after so it
>> makes no difference.
>>
>>
>> ggplot() +
>> geom_col(
>> data=test,
>> aes(x=Sample, y=value, fill=SSAtype),
>> position="dodge"
>> ) +
>> geom_pointrange(
>> data=test.ag,
>> aes(x=Sample, y=avg, ymin=avg-odch, ymax=avg+odch),
>> size = 2
>> ) +
>> scale_fill_manual(
>> #values=tablePal,
>> values = 2:3,
>> name="Calculation\n performed\n according to",
>> labels=c("bla", "blabla")
>> ) +
>> #guides(fill = guide_legend(override.aes = list(shape = NA))) +
>> scale_shape_manual(name = "Measured", values = 19, labels
= NULL)
>>
>>
>> Hope this helps,
>>
>> Rui Barradas
>>
>>
>> ?s 12:15 de 16/05/2022, PIKAL Petr escreveu:
>>> Hallo all
>>>
>>>
>>>
>>> Here are the data from dput
>>>
>>>
>>>
>>> test <- structure(list(Sample = c("A", "A",
"A", "A", "A", "A", "B",
>>>
>>> "B", "B", "B", "B",
"B", "C", "C", "C", "C",
"C", "C"), SSAtype = c("one",
>>>
>>> "one", "one", "two", "two",
"two", "one", "one", "one",
"two",
>>>
>>> "two", "two", "one", "one",
"one", "two", "two", "two"), value
>>> c(8.587645149,
>>>
>>> 8.743793651, 8.326440422, 9.255940687, 8.971931555, 8.856323865,
>>>
>>> 9.650809096, 9.725504448, 9.634449367, 9.69485369, 9.526758476,
>>>
>>> 10.03758001, 10.76845392, 10.66891602, 10.34894497, 10.76284989,
>>>
>>> 10.53074081, 11.16464528), SSAmeasuredP = c(8.3, 8.3, 8.3, 8.3,
>>>
>>> 8.3, 8.3, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 11, 11, 11, 11, 11, 11
>>>
>>> ), identity = c("point", "point",
"point", "point", "point",
>>>
>>> "point", "point", "point",
"point", "point", "point", "point",
>>>
>>> "point", "point", "point",
"point", "point", "point")), row.names = c(NA,
>>>
>>> 18L), class = "data.frame")
>>>
>>>
>>>
>>> test.ag <- structure(list(Sample = c("A",
"B", "C"), avg = c(8.3, 9.5, 11
>>>
>>> ), odch = c(0.2, 0.4, 0.3), identity = c("point",
"point", "point"
>>>
>>> )), row.names = c(NA, 3L), class = "data.frame")
>>>
>>>
>>>
>>> I try to make some relatively simple barplot and I wanted to add
points to
>>> it which I somehow did.
>>>
>>>
>>>
>>> library(ggplot2)
>>>
>>>
>>>
>>> p <- ggplot(test, aes(x=Sample, y=value, fill=SSAtype))
>>>
>>>
p+geom_col(position="dodge")+geom_point(aes(y=SSAmeasuredP,
>> shape=identity),
>>> size=5)+
>>>
>>> scale_fill_manual(values=tablePal, name="Calculation\n
performed\n
>> according
>>> to",
>>>
>>> labels=c("bla", "blabla"))+
>>>
>>> guides(fill= guide_legend(override.aes = list(shape=NA)))+
>>>
>>> scale_shape_manual(name = "Measured", values=19,
labels=NULL)
>>>
>>>
>>>
>>> But instead of points I want to use pointrange with data from other
df. I
>>> found some help and all is good except size of the points and
missing
>> legend
>>>
>>>
>>>
>>> ggplot()+
>>>
>>> geom_col(data=test, aes(x=Sample, y=value, fill=SSAtype),
>> position="dodge")+
>>>
>>> scale_fill_manual(values=tablePal, name="Calculation\n
performed\n
>> according
>>> to",
>>>
>>> labels=c("bla", "blabla"))+
>>>
>>> geom_pointrange(data=test.ag, aes(x=Sample, y=avg, ymin=avg-odch,
>>>
>>> ymax=avg+odch)) +
>>>
>>> guides(fill= guide_legend(override.aes = list(shape=NA)))+
>>>
>>> scale_shape_manual(name = "Measured", values=19,
labels=NULL)
>>>
>>>
>>>
>>> Although I will try to find some workable way I also would like to
ask for
>>> help from R gurus, maybe I overlooked some simple way how to do it.
>>>
>>>
>>>
>>> Best regards
>>>
>>> Petr
>>>
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more,
see
>>> stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide R-project.org/posting-
>> guide.html
>>> and provide commented, minimal, self-contained, reproducible code.