Я относительно новичок в R и ggplot, но я уже нашел общую проблему, возникающую с моими графиками
По какой-то причине ggplot обычно решает не показывать метку верхнего тика на y- ось. Я нашел изображение из случайного поиска Google, но оно иллюстрирует проблему, о которой я говорю:
Как видно из На приведенном выше графике одна из линий проходит значительно выше верхней метки на оси Y. Я нахожу это очень расстраивающим, и мне кажется странным, что ggplot делает это. Я бы предпочел, чтобы все данные в моих графиках содержались внутри минимальных и максимальных меток тиков, а не выходили за их пределы.
Обычно это не будет большой проблемой, поскольку можно просто вручную настроить метки оси Y. Однако в этом случае у меня есть две грани со шкалой по оси Y, установленной free_y
. Следовательно, я не могу просто установить метки галочки по оси Y вручную, поскольку они должны иметь разные значения для любого графика. Вот графики:
В идеале, на левом графике метка верхнего тика оси Y должна быть 40, а на правом графике это было бы 6. Это обеспечило бы, чтобы все данные содержались в пределах минимальных и максимальных пределов оси y, но из-за вышеупомянутого усложнения, вызванного огранкой, это легче сказать, чем сделать.
Могу ли я достичь желаемого эффекта без полной переделки кода?
Вот ссылка на файлы CSV, которые я использую: https://onedrive.live.com/?authkey=%21AEeTM7phVBNGI5c&id=ACB3DC15E10D8AF1%213433&cid=ACB3DC15E10D8AF1. К сожалению, при совместном использовании CSV через OneDrive они преобразуются в файлы Excel. Таким образом, вам может понадобиться получить доступ к этим файлам и экспортировать их в файлы CSV, чтобы следующий код работал:
library(ggplot2)
library(scales)
library(extrafont)
library(dplyr)
library(tidyr)
# you may also need to adjust the working directory here:
work_dir <- "D:\\OneDrive\\Documents\\Economic Data\\Historical Yields\\Eurozone"
setwd(work_dir)
germany_yields <- read.csv(file = "Germany 10-Year Yield Weekly (2007-2020).csv", stringsAsFactors = F)
germany_yields <- germany_yields[, -(3:6)]
colnames(germany_yields)[1] <- "Date"
colnames(germany_yields)[2] <- "Germany.Yield"
italy_yields <- read.csv(file = "Italy 10-Year Yield Weekly (2007-2020).csv", stringsAsFactors = F)
italy_yields <- italy_yields[, -(3:6)]
colnames(italy_yields)[1] <- "Date"
colnames(italy_yields)[2] <- "Italy.Yield"
greece_yields <- read.csv(file = "Greece 10-Year Yield Weekly (2007-2020).csv", stringsAsFactors = F)
greece_yields <- greece_yields[, -(3:6)]
colnames(greece_yields)[1] <- "Date"
colnames(greece_yields)[2] <- "Greece.Yield"
combined <- merge(merge(germany_yields, italy_yields, by = "Date", sort = F),
greece_yields, by = "Date", sort = F)
combined <- na.omit(combined)
combined$Date <- as.Date(combined$Date,format = "%B %d, %Y")
combined["Italy_v_Germany.Spread"] <- combined$Italy.Yield - combined$Germany.Yield
combined["Greece_v_Germany.Spread"] <- combined$Greece.Yield - combined$Germany.Yield
fl_dates <- c(tail(combined$Date, n=1), head(combined$Date, n=1))
longcombined <- gather(combined,
key="measure",
value="value",
c("Italy_v_Germany.Spread",
"Greece_v_Germany.Spread"))
ggplot(data=longcombined, aes(x = Date, y = value)) + geom_line() +
facet_wrap(~measure, scales = "free_y") +
geom_blank(aes(y = 0)) +
scale_x_date(limits = fl_dates,
breaks = seq(as.Date("2008-01-01"), as.Date("2020-01-01"), by="2 years"),
expand = c(0, 0),
date_labels = "%Y") +
scale_y_continuous(n.breaks = 7)