Inco83
Inco83

Reputation: 65

geom_point isn't filled by scale_fill_manual

I would like to draw a chart with ggplot for a couple of model accuracies. The detail of the plotted result doesn't matter, however, I've a problem to fill the geom_point objects.

A sample file can be found here: https://ufile.io/z1z4c

My code is:

library(ggplot2)
library(ggthemes)

Palette <- c('#A81D35', '#085575', '#1DA837')

results <- read.csv('test.csv', colClasses=c('factor', 'factor', 'factor', 'numeric'))
results$dates <- factor(results$dates, levels = c('01', '15', '27'))
results$pocd <- factor(results$pocd, levels = c('without POCD', 'with POCD', 'null accuracy'))
results$model <- factor(results$model, levels = c('SVM', 'DT', 'RF', 'Ada', 'NN'))

ggplot(data = results, group = pocd) + 
  geom_point(aes(x = dates, y = acc,
                 shape = pocd,
                 color = pocd,
                 fill = pocd,
                 size = pocd)) +
  scale_shape_manual(values = c(0, 1, 3)) +
  scale_color_manual(values = c(Palette[1], Palette[2], Palette[3])) +
  scale_fill_manual(values = c(Palette[1], Palette[2], Palette[3])) +
  scale_size_manual(values = c(2, 2, 1)) +
  facet_grid(. ~ model) +
  xlab('Date of knowledge') +
  ylab('Accuracy') +
  theme(legend.position = 'right',
        legend.title = element_blank(),
        axis.line = element_line(color = '#DDDDDD'))

As a result I get unfilled circles and squares. How can I fix it, so that the squares and circles are filled with the specfic color?

enter image description here

Additional question: I would like to add a geom_line to the graph, connecting the three points in each group. However, I fail to adjust linetype and width. It always take the values of scale_*_manual, which is very adverse especially in the case of size.

Thanks for helping!

Upvotes: 3

Views: 2932

Answers (1)

Luke Hayden
Luke Hayden

Reputation: 712

You need to change the shapes specified, like so:

  scale_shape_manual(values = c(21,22,23)) +

For your additional question, that should be solved if you set aes(size=) in the first part of your code (under ggplot(data=...) and then manually specify size=1 under geom_line as +geom_line(size=1....`

Upvotes: 5

Related Questions