R. Как избежать линий, соединяющих точки в точечном графике - PullRequest
0 голосов
/ 26 апреля 2018

Я сделал график, используя plot (), используя RStudio. enter image description here

x = X$pos
y = X$anc
z = data.frame(x,y)

#cut in segments
my_segments = c(52660, 106784, 151429, 192098, 233666, 
                273857, 307933, 343048, 373099, 408960, 
                441545, 472813, 497822, 518561, 537471, 
                556747, 571683, 591232, 599519, 616567, 
                625727, 633744)
my_cuts = cut(x,my_segments, labels = FALSE)
my_cuts[is.na(my_cuts)] = 0

This is the code:

#create subset of segments
z_alt = z
z_alt[my_cuts %% 2 == 0,] = NA

#plot green, then alternating segments in blue
plot(z, type="p", cex = 0.3,pch = 16,
     col="black", 
     lwd=0.2,
     frame.plot = F,
     xaxt = 'n', # removes x labels,
     ylim = c(0.3, 0.7),
     las = 2,
     xlim = c(0, 633744),
     cex.lab=1.5, # size of axis labels
     ann = FALSE, # remove axis titles
     mgp = c(3, 0.7, 0)) 

lines(z_alt,col="red", lwd=0.2)

# adjust y axis label size
par(cex.axis= 1.2, tck=-0.03)

Если вы видите, некоторые черные точки разделены, но другие черные точки имеют красные соединительные линии. Кто-нибудь знает, как убрать эти надоедливые строки? Я просто хочу черные и красные точки. Большое спасибо

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

нет необходимости вызывать точки во второй функции. Вы можете попробовать напрямую установить цвет в функции графика, используя цветовой вектор.

#  create some data as you have not provided some
set.seed(123)
df <- data.frame(x=1:100,y=runif(100))

# some sgment breaks
my_segments <- c(0,10,20,50,60)
gr <- cut(df$x, my_segments,labels = FALSE, right = T)
gr[is.na(gr)] <- 0

# create color vector with 1 == black, and 2 == red
df$color <- ifelse(gr %% 2 == 0, 1, 2)

# and the plot
plot(df$x, df$y, col = df$color, pch = 16)

enter image description here

0 голосов
/ 26 апреля 2018

Проблема в том, что вы используете lines для добавления z_alt. Как следует из названия функции, вы будете добавлять строки. Вместо этого используйте points.

z <- runif(20,0,1)
z_alt <- runif(20,0.8,1.2)
plot(z, type="p", col="black", pch = 16, lwd=0.2, ylim = c(0,1.4)) 
points(z_alt, col = "red", pch = 16, lwd = 0.2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...