I have a problem concerning the aesthetics of a graph. I would like to remove the black border of the bubbles on the graph but keep it in the legend. Is this possible?
Below are the actual graph and the code.
It can be also a white border on the graph, so as to artificially remove it.
library(ggplot2)
library(hrbrthemes)
library(viridis)
library(ggrepel) # Per evitare sovrapposizioni
# Crea il dataframe
data <- data.frame(
Progetto = c("Progetto primo", "Progetto secondo", "Progetto terzo", "Progetto quarto", "Progetto quinto",
"Progetto sesto", "Progetto settimo", "Progetto ottavo", "Progetto nono", "Progetto decimo",
"Progetto undicesimo", "Progetto dodicesimo", "Progetto tredicesimo"),
Impatto = c(2, 5, 3, 3, 8, 3, 5.5, 7, 4, 7, 6, 3, 7.5),
`Difficoltà tecnica` = c(7.5, 3, 5, 8, 8, 5, 5, 8, 8, 6, 8, 10, 10),
Durata = c(6.00, 3.00, 6.00, 6.00, 12.00, 6.00, 3.00, 6.00, 12.00, 12.00, 18.00, 24.00, 36.00)
)
# Visualizza il dataframe
print(data)
attach(data)
# Creazione del grafico a bolle
ggplot(data, aes(
x = Impatto,
y = `Difficoltà.tecnica`,
size = Durata, # Rimosse le virgolette
fill = Progetto,
label = Progetto
)) +
geom_point(alpha = 0.7, shape = 21, color = "black") + # Sfere con bordi neri
geom_text_repel(
size = 3.5,
show.legend = FALSE,
box.padding = 0.7, # Spaziatura attorno all'etichetta
point.padding = 0.7, # Spaziatura tra etichetta e punto
max.overlaps = Inf # Evita di eliminare etichette
) +
scale_size(range = c(3, 10), name = "Durata (Mesi)") + # Dimensioni delle sfere
scale_fill_viridis(discrete = TRUE, option = "A", guide = FALSE) + # Palette Viridis senza legenda
labs(
title = "Diagramma a Bolle con Viridis",
x = "Impatto",
y = "Difficoltà Tecnica"
) +
expand_limits(x = c(0, 11), y = c(4, 11)) + # Estendi i limiti degli assi per evitare tagli
theme_ipsum() + # Tema simile al tuo esempio
theme(
plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
axis.title = element_text(size = 12)
)
You can override an aesthetic in the legend. Here's a simple example with mtcars
where I make the color match the fill, but override the color to be black in the legend:
ggplot(mtcars, aes(wt, mpg, fill = factor(cyl))) +
geom_point(aes(color = factor(cyl)), shape = 21) +
guides(fill = guide_legend(override.aes = list(color = "black")))
In your case, you have a size
legend, so guides(size = guide_legend(override.aes = list(color = "black")))
should work.