ggplot 版本的点图

Jil*_*lum 1 r ggplot2 plotly ggplotly

好奇如何使用 ggplot 或 plotly 库函数绘制这个点图。还要在各个点上标记 mpg 值。

# Dotplot: Grouped Sorted and Colored
# Sort by mpg, group and color by cylinder 
x <- mtcars[order(mtcars$mpg),] # sort by mpg
x$cyl <- factor(x$cyl) # it must be a factor
x$color[x$cyl==4] <- "red"
x$color[x$cyl==6] <- "blue"
x$color[x$cyl==8] <- "darkgreen"    
dotchart(x$mpg,labels=row.names(x),cex=.7,groups= x$cyl,
         main="Gas Milage for Car Models\ngrouped by cylinder",
         xlab="Miles Per Gallon", gcolor="black", color=x$color)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

zac*_*dav 5

通过将行名快速清理为一列,您可以执行以下操作。

我们用于factor()颜色的美学,使其变得离散/当刻面实现这种外观时,您需要"free_y"scale和指定space

根据

library(tidyverse)
mtcars2 = rownames_to_column(mtcars, "car")
ggplot(mtcars2, aes(x = mpg, y = factor(car), color = factor(cyl))) + 
  geom_point(shape = 1) + 
  facet_grid(cyl ~ ., scales = "free_y", space = "free_y") + 
  theme_bw() + 
  theme(panel.grid = element_blank(),
        panel.grid.major.y = element_line(size=.1, color="grey90"),
        legend.position = "none") +
  ggtitle("Gas Milage for Car Models\ngrouped by cylinder") + 
  xlab("Miles Per Gallon") +
  ylab("")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


添加文本

ggplot(mtcars2, aes(x = mpg, y = factor(car), color = factor(cyl))) + 
  geom_point(shape = 1) + 
  geom_text(aes(label = mpg), colour = "grey40", size = 3, hjust = -0.3) + 
  facet_grid(cyl ~ ., scales = "free_y", space = "free_y") + 
  theme_bw() + 
  theme(panel.grid = element_blank(),
        panel.grid.major.y = element_line(size=.1, color="grey90"),
        legend.position = "none") +
  ggtitle("Gas Milage for Car Models\ngrouped by cylinder") + 
  xlab("Miles Per Gallon") +
  ylab("")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

您可能可以geom_label改用,但geom_text在这里效果很好。