Optimization을 공부중인데 3차원 함수와 그 미분 그래프등이 등장을 하는데, 이런 기초적인 그래프를 그려본 적이 없다.
그것도 미려하지만 좀 더 복잡한 ggplot으로......
그래서 다음 링크를 다행히 찾아 코드를 소개할까 한다. 함수만 수정한다면 여러분이 원하는 그래프로 무한히 확장될 수 있다.
그리고 파이썬 코드로 찾아서 Python 공부방에 별도롤 소개하고자 한다.
https://rstudio-pubs-static.s3.amazonaws.com/321187_66c2503dab964ff89e6aa4a1bfb3cc76.html
library(ggplot2)
x.seq <- seq(from = 0.1, to = 10, length.out = 101)
f <- sapply(x.seq, function(x) x^2 - 9)
library(ggplot2)
# put the x and y values in a data frame
plot_data <- data.frame("x" = x.seq, "f" = f)
# create the base layer of ggplot with geom_Line
plot_f <- ggplot(plot_data, aes(x = x, y = f)) +
geom_line(color = "red", size = 1.0) +
labs(x = "x", y = "f(x) = x^2 - 9")
# beautify : Increase font size in axes
plot_f + theme(axis.text.x =
element_text(face = "bold",size = 12),
axis.text.y =
element_text(face = "bold", size = 12),
axis.line = element_line(colour = "black",
size = 1, linetype = "solid"))
plot_f
# Let us create our tangent line function at some point a
f_tangent <- function(x, f, df, a){
# We need the function and its derivative,df
# f=y
# a is the point where we create the tangent to the function
# returns the tangent line
df(a)*(x - a) + f(a)
}
# add the tangent line at 4 to our data frame
plot_data$f.tan <- sapply(plot_data$x, f_tangent, f = function(x) x^2 - 9, df = function(x) 2*x, a = 4)
# create the base layer of ggplot with geom_Line
plot_tangent_line <- ggplot(plot_data, aes(x = x)) +
geom_line(aes(y = f), color = "red", size = 0.95) +
geom_line(aes(y = f.tan), color = "blue", size = 0.95) +
labs(x = "x", y = "f(x) and tangent line at 4")
plot_tangent_line