我是R新手,需要以下帮助。
我有以下数据
# Simulate matrix of integers
set.seed(1)
df <- matrix(sample.int(5, size = 3*5, replace = TRUE), nrow = 3, ncol = 5)
print(df)
df <- tbl_df(df) # tabulate as dataframe
df <- rbind(df, c(3,5,4,1,4))
print(df)
在一个命令中,我需要绘制每行的数据,以便y轴:每行中的数据(在我的情况下,这些是从1到5的值); x轴:指向每一列的值1,2,3,4,5。如此有效地,对于每一行,我正在尝试绘制每一列的行值变化情况。
我尝试了以下方法,该方法可以工作,但有两个问题需要解决。首先,这一次只能绘制1行。这不是一种有效的处理方式,尤其是当行数很多时。其次,我找不到将x轴称为列数的方法,因此我只能简单地计算列数(即5),然后将ac(1:5)向量表示为列数。我还尝试将ncol(df)表示为x轴,但这返回一个错误,指出变量的长度不同。确实,当请求ncol(df)时,它返回数字5,这是列数,但它没有执行我想要的操作,即依次表示列数为1,2,3,4,5。
plot(c(1:5),df[1,], type = "b", pch=19,
col = "blue", xlab = "number of columns", ylab = "response format")
谢谢,非常感谢您的帮助
答案 0 :(得分:2)
您可以这样做:
library(tidyverse)
df %>%
mutate(row_number = as.factor(row_number())) %>%
gather(columns, responses, V1:V5) %>%
ggplot(aes(x = columns, y = responses, group = row_number, color = row_number)) +
geom_line() + geom_point()
输出:
这是什么:
row_number
); columns
的第一列,responses
的另一列; 您还可以通过添加facet_wrap
来稍微改变图形,使每条线(行)都有自己的图表,例如:
df %>%
mutate(row_number = as.factor(row_number())) %>%
gather(columns, responses, V1:V5) %>%
ggplot(aes(x = columns, y = responses, group = row_number, color = row_number)) +
geom_line() + geom_point() +
facet_wrap(~ row_number)
输出: