gpt4 book ai didi

r - 使用 ggplot2、R 在圆形图上绘制因子的非重叠水平

转载 作者:行者123 更新时间:2023-12-02 04:28:21 25 4
gpt4 key购买 nike

我正在尝试创建一个圆形图来显示数据集中的显示频率/月份数,但我也想按季节对月份进行分组。这是一天中时间的类似图,现在我想使用相同的方法来绘制月份/季节。然而,由于某种原因,我似乎无法指定正确的选项来将我的规模划分为不重叠的月份类别。非常感谢任何建议。

library(lubridate)
library(ggplot2) # use at least 0.9.3 for theme_minimal()
library(circular)

### PLOT FOR HOURS ###

## generate random data in POSIX date-time format
set.seed(44)
N=500
events <- as.POSIXct("2011-01-01", tz="GMT") +
days(floor(365*runif(N))) +
hours(floor(24*rnorm(N))) + # using rnorm here
minutes(floor(60*runif(N))) +
seconds(floor(60*runif(N)))

# extract hour with lubridate function
hour_of_event <- hour(events)
# make a dataframe
eventdata <- data.frame(datetime = events, eventhour = hour_of_event)
# determine if event is in business hours
eventdata$Workday <- eventdata$eventhour %in% seq(6, 18)

ra<-length(eventdata[,2])

for (i in 1:ra){

if(eventdata[,3][i]=="TRUE"){eventdata$diel[i]<-"day"}else{eventdata$diel[i]<-"night"}

}

# Plot

ggplot(eventdata, aes(x = eventhour, fill = diel)) +
geom_histogram(breaks = seq(0,24), width = 2, colour = "grey") +
coord_polar(start = 0) + theme_minimal() +
scale_fill_brewer() + ylab("Count") + ggtitle("Events by Time of day") +
scale_x_continuous("", limits = c(0, 24), breaks = seq(0, 24), labels = seq(0,24))

这是我尝试按月/季节绘制情节,

### PLOT FOR MONTHS ###

head(events)

# extract hour with lubridate function
month_of_event <- month(events)

# make a dataframe
eventdata <- data.frame(datetime = events, months = month_of_event)

# classify months into seasons
summer<-c(1,2,12)
fall<-c(3,4,5)
winter<-c(6,7,8)
spring<-c(9,10,11)

season.names <- rep("",12)
season.names[summer] <- "Summer"
season.names[fall] <- "Fall"
season.names[winter] <- "Winter"
season.names[spring] <- "Spring"
season.names

eventdata$season<-season.names[eventdata$months]
str(eventdata)

# Plot

ggplot(eventdata, aes(x = months, fill = season)) +
geom_histogram(breaks = seq(0,12, by=1), width = 4) +
coord_polar(start = 0) + theme_minimal() +
scale_fill_brewer() + ylab("Count") +
scale_x_continuous("", limits = c(0, 12), breaks = seq(0, 12), labels = seq(0,12))

最佳答案

以下简单版本有效:

ggplot(eventdata, aes(x = factor(months), fill = season)) + 
geom_histogram()+
coord_polar()

enter image description here

关于r - 使用 ggplot2、R 在圆形图上绘制因子的非重叠水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25276560/

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