Dotplot: как изменить размеры точек dotplot на основе значения в данных и преобразовать все значения по оси x в целые числа

#r #ggplot2

#r #ggplot2

Вопрос:

Я создал точечный график для своих данных, но мне нужно помочь с последними штрихами. Я немного изучал stackoverflow и еще не видел сообщений, которые напрямую отвечали бы на мои запросы.

Мой код для моего точечного графика:

 ggplot() 
geom_dotplot(mapping = aes(x= reorder(Description, -p.adjust), y=Count, fill=-p.adjust),
             data = head(X[which(X$p.adjust < 0.05),], n = 15), binaxis = 'y', dotsize = 2,
            method = 'dotdensity', binpositions = 'all', binwidth = NULL) 
  scale_fill_continuous(low="black", high="light grey")  
  labs(y = "Associated genes", x = "wikipathways", fill = "p.adjust")  
  theme(axis.text=element_text(size=8))  
  ggtitle('')  
  theme(plot.title = element_text(2, face = "bold", hjust = 1),
        legend.key.size = unit(2, "line"))  
  theme(panel.background = element_rect(fill = 'white', colour = 'black')) 
  coord_fixed(ratio = 0.5) 
  coord_flip()
  

Допустим, X — это что-то вроде:

    Description   p.adjust  Count   GeneRatio  
1  DescriptionA  0.001     3       3/20
2  DescriptionB  0.002     2       2/20
3  DescriptionC  0.003     5       5/20
4  DescriptionD  0.004     10      10/20
  

Для завершения этого графика мне нужно два изменения.

Я хотел бы использовать базовый размер точек в GeneRatio и создать вторичный ключ на основе этого размера. Возможно ли это с помощью ggplot2, dotplots?

Далее я хотел бы сохранить значения по оси X в виде целых чисел. Я бы хотел избежать использования чего-то вроде scale_x_continuous(limits = c (2, 10)), поскольку этот код графика является частью функции для нескольких наборов данных разных размеров. Таким образом, ограничение / масштаб не будут работать хорошо.

Помощь была бы очень признательна.

Ответ №1:

Если вы можете переключиться на диаграмму geom_point вместо geom_dotplot, легко настроить размер точки в соответствии с переменной. К счастью, это также исправило проблему с вашей осью.

 ggplot(x) 
  geom_point(mapping = aes(x= reorder(Description, -p.adjust), y=Count, fill=-p.adjust, size=GeneRatio),
               data = head(x[which(x$p.adjust < 0.05),], n = 15), binaxis = 'y', #dotsize = 2,
               method = 'dotdensity', binpositions = 'all', binwidth = NULL) 
  scale_fill_continuous(low="black", high="light grey")  
  labs(y = "Associated genes", x = "wikipathways", fill = "p.adjust")  
  theme(axis.text=element_text(size=8))  
  ggtitle('')  
  theme(plot.title = element_text(2, face = "bold", hjust = 1),
    legend.key.size = unit(2, "line"))  
  theme(panel.background = element_rect(fill = 'white', colour = 'black')) 
  coord_fixed(ratio = 0.5) 
  coord_flip()