GGR图中的圆形条形图
我正在尝试为简单数据创建一个圆形条形图R图形库有一个很好的参考: My是我的数据帧结构(来自GGR图中的圆形条形图,r,ggplot2,R,Ggplot2,我正在尝试为简单数据创建一个圆形条形图R图形库有一个很好的参考: My是我的数据帧结构(来自dput(数据)): 我不能很好地避开栅栏。我想使用另一个名为:paystatus的分类变量避开这些条,该变量假定有三个值:早、晚和早 谢谢你。类似 dataframe %>% ggplot(aes(x = id, y = n) + geom_bar() + coord_polar() 但是在不知道你到底想要什么的情况下…欢迎来到Stack Overflow Surbhi Mi
dput(数据)
):
我不能很好地避开栅栏。我想使用另一个名为:paystatus的分类变量避开这些条,该变量假定有三个值:早、晚和早
谢谢你。类似
dataframe %>%
ggplot(aes(x = id, y = n) +
geom_bar() +
coord_polar()
但是在不知道你到底想要什么的情况下…欢迎来到Stack Overflow Surbhi Mishra 我试图重现您与我们共享的R图形库中的示例。但下一次,试着详细阐述一下。它帮助我们帮助你……:) 让我开门见山吧。我无法使用paystatus,因为您尚未共享数据,但我认为您可能需要以下内容:
# setup environment
library(tidyverse)
# create dataframe
data = data.frame(
month = c('Jan', 'Feb', 'Mar', 'Apr', 'Dec'),
n = c(333, 557, 98, 545, 654),
id = 1:5
)
# define labels
nrows = nrow(data)
angle = 90 - 360*(data$id - 0.5)/nrows
label = data
label$hjust = ifelse(angle < -90, 1, 0)
label$angle = ifelse(angle < -90, angle + 180, angle)
# plot
ggplot(data, aes(x = as.factor(id), y = n)) +
geom_bar(stat = "identity", fill = alpha("skyblue", 0.7)) +
ylim(-200, 700) +
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-1, 4), "cm")) +
coord_polar(start = 0) +
geom_text(data = label, aes(x = id, y = n + 10, label = month, hjust = hjust),
color = "black", fontface = "bold", alpha = 0.6, size = 4,
angle = label$angle, inherit.aes = FALSE)
#设置环境
图书馆(tidyverse)
#创建数据帧
data=data.frame(
月份=c('1月'、'2月'、'3月'、'4月'、'12月'),
n=c(333557598545654),
id=1:5
)
#定义标签
nrows=nrow(数据)
角度=90-360*(数据$id-0.5)/nrows
标签=数据
标签$hjust=ifelse(角度<-90,1,0)
标签$angle=ifelse(角度<-90,角度+180,角度)
#密谋
ggplot(数据,aes(x=as.factor(id),y=n))+
几何图形条(stat=“identity”,fill=alpha(“天蓝”,0.7))+
ylim(-200700)+
主题_极小值()+
主题(
axis.text=元素_blank(),
axis.title=元素_blank(),
panel.grid=element\u blank(),
plot.margin=单位(代表(-1,4),“厘米”))+
坐标(起点=0)+
几何图形文本(数据=标签,aes(x=id,y=n+10,标签=月份,hjust=hjust),
color=“black”,fontface=“bold”,alpha=0.6,size=4,
角度=标签$angle,inherit.aes=FALSE)
以下是输出:
请告诉我们这是否是您想要的。(1)请使您的示例可复制(您可以使用dput()。(2) 展示你的尝试。关于制作一个可复制的例子。我们没有你的任何代码来帮助你调试它,我们看不到你在看什么,我们也不知道“正确的结果”是什么,或者你的结果与此有什么不同谢谢!!这是一个小小的调整。。是的,我将更具描述性:)你能解释一下我们如何设置ylim的限制吗?。(我理解负值)。我的数据中有32行,使用ylim(-20005000),会收到一条消息-删除了10行缺少值(并且在日期集中没有缺少值)不用担心@surbhimshra!顺便说一句,如果我的解决方案对你有帮助,给它一个like(向上投票),它也对我有帮助。关于您的问题,您可能有
data$n
的值高于5000,我认为将ylim(-2002,5000)
更改为ylim(-2000,max(df$n)
会奏效,不是吗?
# setup environment
library(tidyverse)
# create dataframe
data = data.frame(
month = c('Jan', 'Feb', 'Mar', 'Apr', 'Dec'),
n = c(333, 557, 98, 545, 654),
id = 1:5
)
# define labels
nrows = nrow(data)
angle = 90 - 360*(data$id - 0.5)/nrows
label = data
label$hjust = ifelse(angle < -90, 1, 0)
label$angle = ifelse(angle < -90, angle + 180, angle)
# plot
ggplot(data, aes(x = as.factor(id), y = n)) +
geom_bar(stat = "identity", fill = alpha("skyblue", 0.7)) +
ylim(-200, 700) +
theme_minimal() +
theme(
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-1, 4), "cm")) +
coord_polar(start = 0) +
geom_text(data = label, aes(x = id, y = n + 10, label = month, hjust = hjust),
color = "black", fontface = "bold", alpha = 0.6, size = 4,
angle = label$angle, inherit.aes = FALSE)