GGR图中的圆形条形图

GGR图中的圆形条形图,r,ggplot2,R,Ggplot2,我正在尝试为简单数据创建一个圆形条形图R图形库有一个很好的参考: My是我的数据帧结构(来自dput(数据)): 我不能很好地避开栅栏。我想使用另一个名为:paystatus的分类变量避开这些条,该变量假定有三个值:早、晚和早 谢谢你。类似 dataframe %>% ggplot(aes(x = id, y = n) + geom_bar() + coord_polar() 但是在不知道你到底想要什么的情况下…欢迎来到Stack Overflow Surbhi Mi

我正在尝试为简单数据创建一个圆形条形图R图形库有一个很好的参考:

My是我的数据帧结构(来自
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)