Это очень легко решить - если ваша матрица 6x6 с одним геном на строку и одним наблюдением на столбец (таким образом, шесть наблюдений на ген), вам сначала нужно сделать ее длинным форматом (36 строк) - с таким простым форматом это может быть сделано с использованием unlist
- и затем нанесение этого на вектор чисел для представления генов:
# Here I make some dummy data - a 6x6 matrix of random numbers:
df1 <- matrix(rnorm(36,0,1), ncol = 6)
# To help show which way the data unlists, and make the
# genes different, I add 4 to gene 1:
df1[1,] <- df1[1,] + 4
#### TL;DR - HERE IS THE SOULTION ####
# Then plot it, using rep to make the x-axis data vector
plot(x = rep(1:6, times = 6), y = unlist(df1))
Чтобы улучшить читабельность, добавьте метки оси:
# With axis labels
plot(x = rep(1:6, times = 6), y = unlist(df1),
xlab = 'Gene', ylab = 'Value')

Вы также можете использовать ggplot
с эстетикой geom_point
или geom_jitter
- например:
ggplot() +
geom_jitter(mapping = aes(x = rep(1:6, times = 6), y = as.numeric(unlist(data.frame(df1)))))

Обратите внимание, что вы также можете создать эффект "джиттера" в базе R, используя rnorm()
для значений x, настраивая величину джиттера с последним аргументом функции rnorm()
:
plot(x = rep(1:6, times = 6) + rnorm(36, 0, 0.05), y = unlist(df1), xlab = 'Gene', ylab = 'Value')
