R полигональных векторов для точек - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь закрасить верхнюю часть графика (y = 5) до линии, которая была в исходном графике, создав полигон и закрасив его. Я каким-то образом запутываю генерацию точек.Может кто-нибудь объяснить, что здесь не так?(Не означало заполнять треугольник)

half_instances<-c(0,5,2)
Ts<-c(1,2,3)

xpairs<-c(Ts, rep(5,length(half_instances)))
ypairs<-c(Ts,half_instances)
xpairs #1 2 3 5 5 5
ypairs #0 5 2 1 2 3


plot(Ts,half_instances,type="l")
polygon(xpairs,ypairs)

enter image description here

случайный вывод:

enter image description here

Ответы [ 3 ]

1 голос
/ 02 апреля 2019

Я не совсем уверен, что вы пытаетесь сделать, но, надеюсь, поможет следующий код:

half_instances<-c(0,5,2)
Ts<-c(1,2,3)

xpairs<-c(Ts, rep(5,length(half_instances)))
ypairs<-c(Ts,half_instances)
xpairs #1 2 3 5 5 5
ypairs #0 5 2 1 2 3

points <- cbind(Ts, half_instances)

# Set up basic plot
plot(points, type="l")

# Create the outside polygon...
maxX <- max(points[, 1])
minX <- min(points[, 1])
maxY <- max(points[, 2])
minY <- min(points[, 2])

borderPoints <- matrix(c(minX,minY, minX,maxY, maxX,maxY), ncol=2, byrow=TRUE)
linePoints  <- points[nrow(points):1, ]
outside <- rbind(borderPoints, linePoints)

# ...and plot it in blue
polygon(outside, border=NA, col='blue')

# Create the inside polygon and plot it in red
inside <- rbind(points, pts[1,])
polygon(inside, col='red', border=NA)

# Redraw the initial line if you want
lines(points, col='black', lwd=2)

enter image description here

1 голос
/ 02 апреля 2019

Вы перепутали свои значения x и y, 5 должны перейти в вектор для координат y:

half_instances<-c(0,5,2)
Ts<-c(1,2,3)

xpairs <- c(Ts, rev(Ts))
xpairs # 1 2 3 3 2 1 = original x-values from left to right for the bottom half, then go back from right to left by using the reverse of the original x-values
ypairs <- c(half_instances, rep(5, length(half_instances)))
ypairs # 0 5 2 5 5 5 = original y-values for bottom half, then fill up with 5's tor the top half

plot(Ts, half_instances,type="l")
polygon(xpairs, ypairs, col="red")
1 голос
/ 02 апреля 2019

Поскольку у вас есть точки с координатой X = 5, вам нужно изменить xlim, если вы хотите увидеть весь многоугольник:

half_instances<-c(0,5,2)
Ts<-c(1,2,3)

xpairs<-c(Ts, rep(5,length(half_instances)))
ypairs<-c(half_instances,Ts)
xpairs #1 2 3 5 5 5
ypairs #0 5 2 1 2 3


plot(Ts,half_instances,type="l",xlim=c(1,5))
polygon(xpairs,ypairs)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...