gpt4 book ai didi

r - 使用 ggplot2 对 y 值进行分组的点图

转载 作者:行者123 更新时间:2023-12-05 03:13:04 24 4
gpt4 key购买 nike

我有一个类似的数据集

products <- c('Product1', 'Product2', 'Product3', 'Product3', 'Product1', 'Product1')
timestamp <- c(1,2,3,4,5,6)
categories <- c('Category1', 'Category2', 'Category1', 'Category1', 'Category1', 'Category1')
data <- data.frame(timestamp, products, categories)

现在我想像这样用ggplot2画一个点图

ggplot(data, aes(timestamp, products, colour=categories, group=categories)) + geom_point()

生成如下图表

enter image description here

这几乎就是我想要的,但是,我想按照图表中的类别对产品进行分组:

dotchart(data$timestamp, labels=data$products, groups=data$categories, color=data$color)

enter image description here

重要的是为相同的 y 值绘制产品的出现(如在第一个图中),而不是像在第二个图中那样对每个记录重复它。

最佳答案

您可以尝试像这样创建一个新的 y 列:

type <- paste(data$categories, data$products)
# convert to a factor and sort the levels reverse-alphabetical (so it is in order top-down on the plot)
type <- factor(type, levels=sort(unique(type), dec=T))
data$type <- type
ggplot(data, aes(timestamp, type, colour=categories)) + geom_point()

enter image description here

尽管 y 轴文本的布局不像 dotchart 中那样。

或者您可以将 facet_wrap 用于类似但有点不同的东西(那么不需要 type 东西):

ggplot(data, aes(timestamp, products, colour=categories)) + geom_point() + facet_wrap( ~ categories,ncol=1)

enter image description here

这个提供了更多的类别分离,并且具有显示“空”级别组合(例如类别 2 产品 1)的优势(或者可能是劣势,具体取决于您的意见)。如果您不喜欢,请添加 scales="free_y":

ggplot(data, aes(timestamp, products, colour=categories)) + geom_point() + facet_wrap( ~ categories, ncol=1, scales="free_y")

enter image description here

关于r - 使用 ggplot2 对 y 值进行分组的点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31308805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com