Согласно приложенному сюжету, я вполне смог добиться того, что должен был. Однако я застрял на элементарном изменении, которое необходимо.
Цель:
- разрешить geom_point только value1 и остальные переменные будут пунктирными линиями.
- Value1 должно представлять точку в легенде вместо пробела.
library(ggplot2)
library(tidyverse)
library(reshape2)
#Creating a dataframe with use-case specific variables.
df = data.frame(
Year = 2006:2025,
Value1 = c(40.5, 39.0, NA, NA, NA, NA, 29.9, NA, NA, NA, 21.6,
NA, NA, NA, NA, NA, NA, NA, NA, NA),
Value2 = c(NA, NA, NA, NA, NA, NA, 29.9, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 14.9),
Value3 = c(NA, NA, NA, NA, NA, NA, 29.9, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 13.0),
Value4 = c(NA, NA, NA, NA, NA, NA, 29.9, 27.6, 25.4, 23.4, 21.6,
19.9, 18.4, 16.9, 15.6, 14.4, 13.3, NA, 12.2, 11.3)
)
#Transforming data
df <- melt(df,id.vars = "Year")
#Creating a line plot (Year vs. other variables)
ggplot(df[!is.na(df$value),], aes(x=factor(Year), y=value, group=variable)) +
geom_line(aes(linetype=variable, color=variable, size=variable), na.rm = TRUE )+
geom_point(na.rm = TRUE)+
scale_linetype_manual(values=c("blank","dashed","dashed","dashed"))+
scale_color_manual(values=c('#999999','orange2','turquoise2','blue2'))+
scale_size_manual(values=c(0, 1.5, 1.5, 1.5))+
theme(legend.position="top")+
scale_y_continuous(
breaks=seq(0,100, 10), labels = seq(0, 100, 10), limits=c(0,70),
sec.axis = sec_axis(
name='measure (%)', trans='identity',
breaks=seq(0,100,10), labels=seq(0,100,10))) +
theme(
legend.position = 'bottom', legend.direction = 'horizontal',
panel.grid.major.y = element_line(color='gray85'),
axis.title = element_text(face='bold')) +
labs(
x='Year', y='measure (%)')
Created on 2020-07-10 by the reprex package (v0.3.0)
code contributors: chemdork123, pradeepvaranasi
График вывода:
введите описание изображения здесь
Я не смог найти нужные ресурсы, которые позволят достичь поставленных целей, хотя я могу настроить формы и цвета geom_points. Однако это создаст дополнительную легенду.
Любые предложения будут полезны.