У меня есть следующая проблема, которая кажется распространенной, но это не так.Я сделал график ggplot с типом линии и цветом, установленными вручную, обе легенды имеют одинаковые имена и одинаковые метки переменных, df в длинном формате .Создается одна легенда, но каждая переменная отображается дважды.Чтобы вы поняли, чего я хочу достичь, мне нужно немного сделать резервную копию.
Я работаю над функцией, которая позволяет мне обновлять информационный фрейм с ежемесячными расходами на это.год, а затем генерировать различные участки, чтобы следить за моим бюджетом.Мои переменные, так сказать, имеют два «свойства».Они относятся к определенной статье, и каждая статья является либо прогнозом (то есть запланированным), либо фактическими расходами.Первоначально я хотел, чтобы каждый элемент имел один цвет и два типа линий (сплошные для прогнозируемых, сплошные пунктирные для фактических расходов).Так, например, зеленый для экономии, прогнозируемая экономия с помощью сплошной линии, фактическая экономия с пунктирной линией.Я хотел получить две легенды, одна из которых отображает только цвета (то есть предметы), а другая - только два типа линий (сплошная, пунктирная), чтобы читатель мог сложить их вместе (и, следовательно, иметь меньшеВсего элементов легенды).Если у кого-то есть решение этой проблемы, я был бы очень рад узнать.Тем не менее, вот что я пытаюсь решить сейчас:
Я уже отказался от этого первоначального намерения и согласился на легенду с каждым видом строки, получая одну запись легенды.Это то, что было введением (выше).Несмотря на одинаковое имя легенды, метки переменных и их правильное количество, каждая переменная теперь появляется дважды.Я хотел бы знать, почему я получаю эти двойные записи и найти решение.Я перепробовал все виды вещей в течение многих часов и не нашел никого с подобной проблемой (поскольку у меня возникают более "нормальные" проблемы с поиском по ключевым словам).
Одна странная вещь, которую ятакже отметили, что переменная «Добавить доход» не ведет себя как другие переменные, поскольку она появляется только один раз.
Причина, по которой в кадре данных много значений NA (ниже), потому что эти цифры должны быть заполнены в df, а затем нанесены на график в течение года.
Код:
ggplot(fin2019Long, aes(x=month, y=value, colour=variable)) + geom_line(aes(linetype=variable)) + geom_point() +
labs(title = "Projected expenditure and saving", y = "Euros", x = "Month") +
scale_x_continuous("Month", breaks= c(1:12)) +
scale_colour_manual(name = "Items",
values=c("green","green", "yellow", "yellow", "blue", "blue", "red", "red", "orange"),
labels=c(rep("Living expend.", 2), rep("Debt repay.", 2), rep("Saving", 2), rep("Furn. fund", 2), "Extra pay")) +
scale_linetype_manual(name = "Items",
values=c(rep(c("solid", "twodash"), 4), "twodash"),
labels=c(rep("Living expend.", 2), rep("Debt repay.", 2), rep("Saving", 2), rep("Furn. fund", 2), "Extra pay"))
Данные:
structure(list(month = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L,
10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L,
6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L), variable = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L), .Label = c("livingExpProj",
"livingExp", "debtRepayProj", "debtRepay", "savingProj", "saving",
"furnFundProj", "furnFund", "addIncome"), class = "factor"),
value = c(1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1000, 1000, 1000, 1000, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 600, 600, 600, 600, 600, 600, 600, 600, 600,
600, 600, 600, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500,
500, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 100,
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -108L
), class = "data.frame")