(Извините, если мой английский не совершенен ...: -s)Как нарисовать заполненный. Контурный график с data.frame из трех переменных в R (без регулярной сетки)?
Мой вопрос почти то же самое, что в этой теме: Creating a filled contour plot using data in lists
Но разница в том, что я хотел бы сюжет плотность, соответствующая моим координатам (x, y), всего в 1 направлении! Объясняю: У меня есть data.frame как это:
X <- matrix(c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3), nrow=4)
Y <- matrix(c(-1.0190, -0.9617, -0.9044, -0.8470, -1.0617, -0.9641, -0.8664, -0.7688, 0.4623, 0.6012, 0.7401, 0.8790), nrow=4)
Z <- matrix(c(3.9216, 3.9216, 3.9216, 11.7647, 1.9608, 1.9608, 1.9608, 11.7647, 1.9608, 1.9608, 9.8039, 9.8039), nrow=4)
Niveau <- data.frame(X=c(X),Y=c(Y),Z=c(Z))
Х representes рентгеновские координаты Y, Y-координаты и Z плотность в процентах в только направлении Y. Для каждой х-координаты я вычислял плотность в направлении Y. И результат в Z-векторе. Вы можете видеть, что это не регулярная сетка в (x, y). И я хотел бы построить на «контур участка» от плотности Z, но до сих пор я не успех ... я попробовал эту команду:
ggplot(Niveau, aes(x=X, y=Y, z=Z)) + geom_density2d()
Но вычерчивает плотность в х И y, и я хочу только в направлении Y. Когда я попробовал команду:
filled.contour(t(Z), nlevels=10)
Он не уважает (х, у) координаты. И это невозможно осуществить:
filled.contour(X,Y,Z, nlevels=10)
После, некоторых исследований, я нашел эту тему, и мой Probleme тот же: How to draw a contour plot when data are not on a regular grid?
Но ответ не соответствует: решение «регулярное сетка "в (x, y), и это не то, что у меня есть! Кто-нибудь может помочь?
Спасибо!
Вы можете адаптировать этот ответ: http://stackoverflow.com/questions/8508059/simple-r-3d-interpolation-surface-plot/8508463#8508463 –
Спасибо !!! Оно работает !! С того времени я искал ... Вот что я сделал: my.heat.colors <- функция (х) {Rev (heat.colors (х, альфа = 1))} my.matrix <- interp (X, Y, Z, длина = 500) ind.mat.na <- which (is.na (c (my.matrix $ z))) my.matrix $ z [ind.mat.na ] <- 0 fill.contour (my.matrix, nlevels = 10, color = my.heat.colors) И теперь я нарисую контуры на этом. Еще раз спасибо! – sandikou
Поздравляем за решение вашей собственной проблемы (с подсказкой). Это будет хорошая форма и улучшит репутацию StackOverflow, если вы пойдете дальше и опубликуете свое решение в качестве ответа (возможно, вам придется подождать несколько часов - я не уверен). –