在R中以不同颜色绘制矢量中的每10个数据点

时间:2018-06-06 12:54:35

标签: r plot ggplot2 plotly

我在R中有一维向量,我想绘制如下: this 每10个数据点有不同的颜色。如何在R中使用plot函数,使用ggplotplotly执行此操作?

3 个答案:

答案 0 :(得分:3)

在基地R

你可以试试这个。

与其他答案相比,我稍微改变了数据

# The data
set.seed(2017);
df <- data.frame(x = 1:100, y = 0.001 * 1:100 + runif(100));
nCol <- 10;
df$col <- rep(1:10, each = 10);

# base R plot
plot(df[1:2]) #add `type="n"` to remove the points
sapply(1:nrow(df), function(x) lines(df[x+0:1,1:2], col=df$col[x], lwd=2))

enter image description here

对于要回收col参数的行,您必须在行和绘图段上使用循环(此处为sapply)。

答案 1 :(得分:2)

这是一个ggplot解决方案;遗憾的是,你没有提供样本数据,所以我正在生成一些随机数据。

# Sample data
set.seed(2017);
df <- data.frame(x = 1:100, y = 0.001 * 1:100 + runif(1000));

# The number of different colours
nCol <- 5;
df$col <- rep(1:nCol, each = 10);

# ggplot
library(tidyverse);
ggplot(df, aes(x = x, y = y, col = as.factor(col), group = 1)) +
    geom_line();

enter image description here

对于plotly,只需将ggplot电话打包在ggplotly内。

答案 2 :(得分:2)

此答案不会向您展示如何在特定的绘图包中进行,而是显示如何根据您的规范为数据指定随机颜色。这种方法的好处是,它可以让你控制你选择使用哪种颜色。

library(dplyr) # assumed okay given ggplot2 mention
df = data_frame(v1=rnorm(100))
n = nrow(df)
df$group = (1:n - (1:n %% -10)) / 10
colors = sample(colors(), max(df$group), replace=FALSE)
df$color = colors[df$group]
df %>% group_by(group) %>% filter(row_number() <= 2) %>% ungroup()
# A tibble: 20 x 3
              v1 group           color
           <dbl> <dbl>           <chr>
 1 -0.6941434087     1 lightsteelblue2
 2 -0.4559695973     1 lightsteelblue2
 3  0.7567737300     2  darkgoldenrod2
 4  0.9478937275     2  darkgoldenrod2
 5 -1.2358486079     3      slategray3
 6 -0.7068140340     3      slategray3
 7  1.3625895045     4        cornsilk
 8 -2.0416315923     4        cornsilk
 9 -0.6273386846     5  darkgoldenrod4
10 -0.5884521130     5  darkgoldenrod4
11  0.0645078975     6   antiquewhite1
12  1.3176727205     6   antiquewhite1
13 -1.9082708004     7           khaki
14  0.2898018693     7           khaki
15  0.7276799336     8     greenyellow
16  0.2601492048     8     greenyellow
17 -0.0514811315     9       seagreen1
18  0.8122600269     9       seagreen1
19  0.0004641533    10   darkseagreen4
20 -0.9032770589    10   darkseagreen4

上面的代码首先创建一个包含100行数据的虚假数据集,并将n设置为等于100. df$group是通过取行号(1:n)来设置的。复杂的评估,以获得像c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, ..., 10)这样的数字向量。然后,它会对基础R中可用的颜色进行采样,返回与它们的组(max(df$group))一样多的颜色,然后使用group变量来索引color向量以获取颜色。最终输出只是每组的前两行,以显示组内的颜色相同,但组之间的颜色不同。现在应该可以在各种绘图环境中将其作为变量传递。