Так что, по-видимому, я пропустил название такого графика, который является контурным графиком или графиком уровня. Простая функция в решетке позволяет это сделать. Я использовал следующий код, найденный в этот блог R а>:
df<-data.frame(x=runif(1000,670,3300),y=runif(1000,2,30),z=runif(1000,0.5,1.5))
gni.loess = loess(z ~ x*y, data = df, degree = 2, span = 0.25)
gni.fit = expand.grid(list(x = seq(670, 3300, 0.1), y = seq(2, 30, 0.1)))
z = predict(gni.loess, newdata = gni.fit)
gni.fit$prod=as.numeric(z)
levelplot(prod ~ x*y, data = gni.fit,
xlab = "x", ylab = "y",
main = "z on an x*y grid",
col.regions = terrain.colors(100)
)
Что дает что-то вроде этого (случайно, поскольку в примере нет связи между [x, y] и z):
а>
Я все еще пытаюсь добавить диаграмму рассеяния y ~ x поверх нее.
EDIT: решение с ggplot2 проще использовать для многослойных графиков, но дает менее определенные границы для графика уровня (т.е. более непрерывный цветовой спектр для значений z на графике). Добавление исходной (x,y) диаграммы рассеяния (в отличие от преобразованных значений, полученных с помощью expand.grid) возможно, например, с помощью geom_point(). Другая возможность, менее привлекательная графически, но намного более простая, заключается в использовании выражения geom_point(), такого как это:
p<-ggplot(df,aes(x,y))
p + geom_point(data=df, aes(x,y, color=z))+ scale_colour_gradient(low = "green", high="red")
Предоставление:
person
Chris. Z
schedule
13.01.2016