Я использую R для решения уравнения с двумя переменными в R. Я изменяю две переменные по последовательности, а затем использую geom_raster с интерполяцией для генерации графика решений.
Однако, когда я наносил данные на график, я заметил, что площадь графика превышает диапазон значений оси Y, которые я даю в качестве входных данных.
Если я использую ylim, чтобы наложить ограничение на область, то интерполированный график сжимается и больше не ограничивает значения. Если я использую vjust = 0, то верхняя часть графика ограничивает область, а нижняя - нет.
Мой код для воспроизводимого примера выглядит следующим образом:
library(ggplot2)
library(reshape2)
x_range <- seq(0.001,10, by=0.001)
y_range <- (seq(1*10^-10, 1*10^-9, by = 1*10^-10))
FUN <- function(x, y) log10((1)/(x*y))
data <- outer(x_range, y_range, FUN)
colnames(data) <- y_range
rownames(data) <- x_range
melted_data <- melt(data)
p <- ggplot(data=melted_data)
# basic plot
p + geom_raster(aes(x=Var1, y=Var2, fill=value), interpolate = TRUE) +
geom_hline(yintercept = 1*10^-10) +
geom_hline(yintercept = 1*10^-9)
# with imposed ylim
p + geom_raster(aes(x=Var1, y=Var2, fill=value), interpolate = TRUE) +
geom_hline(yintercept = 1*10^-10) +
geom_hline(yintercept = 1*10^-9) +
ylim(1*10^-9, 1*10^-10)
# with modified vjust
p + geom_raster(aes(x=Var1, y=Var2, fill=value), interpolate = TRUE, vjust = 0) +
geom_hline(yintercept = 1*10^-10) +
geom_hline(yintercept = 1*10^-9)
Я бы хотел, чтобы окончательный график ограничивал фактические данные (заданные двумя горизонтальными линиями при y = 1 * 10 ^ -9 и y = 1 * 10 ^ -10.
Я думаю, что я наблюдаю из-за интерполированного размера пикселя, но я не уверен.