将网格线与基本R图中的刻度线对齐

时间:2018-07-22 11:12:30

标签: r plot

the pic

我在网上看到了这张照片,只是想知道如何在R中绘制它。这是我的代码:

article <- data.frame(x = as.Date(round(runif(1000), 2) * 100, origin = '2017-01-01'), y = sample(letters[1:10], 1000, T))
plot(article$x, article$y, pch = 19, col = article$y, xlab = 'date', ylab = 'account', yaxt = 'n') + grid(nx = 10, ny = 10, lty = 1, col = 'grey')
axis(2, at = 1:10, label = levels(article$y))

my pic

我得到了这样的照片。仍然存在一个问题:y轴上的网格线与轴标签不对应。那么如何解决这个问题,还是有一种更直接的方法来绘制情节?

2 个答案:

答案 0 :(得分:1)

我不知道如何修正grid()的参数,以便提供所需的内容,但是您可以使用plot()绘制空白图,使用abline()绘制空白网格,然后使用points()在其上绘制数据。

因此,使用您的数据

plot(article$x, article$y, type="n", xlab = 'date', ylab = 'account', yaxt = 'n', xaxt = 'n') 
abline(h=1:10, v=pretty(article$x), col="grey")
points(article$x, article$y, pch = 19, col = article$y) 
axis(2, at = 1:10, label = levels(article$y))
axis(1, at = pretty(article$x), label = format(pretty(article$x), "%b"))

或者只是在执行操作时绘制数据,然后使用abline()绘制网格,但是这样做时,网格将绘制在数据点的顶部。

答案 1 :(得分:0)

ggplot生成的图形与您帖子中包含的第一张图片非常相似:

library(ggplot2)
library(dplyr)

article %>% 
  ggplot(aes(x, y, colour=y)) + geom_point() + theme_light() + labs(x='date', y='account')

enter image description here