Это должно помочь вам начать работу и обеспечить хорошую основу.
df = read.table(text = "genotype NovelMouseChamber CChamber NovelObjectChamber
1 EXP 457.457 54.4878 87.0871
2 ctrl 129.596 146.413 323.023
3 ctrl 306.306 73.7404 218.952
4 ctrl 369.603 117.518 111.912", header = T)
dfm = reshape2::melt(df, id.vars = "genotype")
ggplot(dfm, aes(x = genotype, fill = variable, color = variable, y = value)) +
stat_summary(geom = "bar", fun.y = mean, position = "dodge") +
stat_summary(geom = "errorbar",
fun.ymin = function(y) mean(y) - 1.96 * sd(y),
fun.y = function(y) mean(y),
fun.ymax = function(y) mean(y) + 1.96 * sd(y),
position = position_dodge(width = 0.9),
width = 0.3, color = "black")
![enter image description here](https://i.stack.imgur.com/g6SPi.png)
Вы можете видеть, что я полагался на ggplot
сделать манипулирование данными - вычисление средних и интервалов для панелей ошибок.Как правило, я рекомендую против , чтобы я предпочел использовать dplyr
или data.table
для выполнения этих вычислений, тогда код построения графика был бы более простым.Если вы создаете фрейм данных со столбцами y
, ymin
и ymax
(в дополнение к столбцам genotype
, variable
и value
- какими бы они ни были), вы можете просто использовать geom_bar
и geom_errorbar
без всех stat_summary
сложностей.
Как уже упоминалось в комментариях, вам также необходимо убедиться, что все ваши данные имеют соответствующий тип - числовые данные должны быть numeric
, а не character
, прежде чем делать какие-либо графики или расчеты.