gpt4 book ai didi

r - 使用ggplot对同一图中的两个直方图进行排序

转载 作者:行者123 更新时间:2023-12-03 17:56:03 26 4
gpt4 key购买 nike

我有一个无法找到解决方案的问题。我有一个包含不同形容词和分词的数据框,它们以两种不同的模式出现。

head(THAT_EXT_COMBINED)
ID PATTERN NODE
1 HRE_721_03 THAT_EXT accepted
2 G08_1321_01 THAT_EXT acknowledged
3 AAW_47_03 THAT_EXT acknowledged
4 G20_1490_01 THAT_EXT alarming
5 FY8_732_02 THAT_EXT amazing
6 HEM_128_03 THAT_EXT amazing

str(THAT_EXT_COMBINED)
'data.frame': 1450 obs. of 3 variables:
$ ID : Factor w/ 1450 levels "A05_253_01","A05_277_07",..: 1109 827 265 853 812 1046 369 810 214 41 ...
$ PATTERN: Factor w/ 2 levels "THAT_EXT","THAT_POST": 1 1 1 1 1 1 1 1 1 1 ...
$ NODE : Factor w/ 201 levels "accepted","acknowledged",..: 1 2 2 6 8 8 8 10 12 15 ...

我想在同一图中使用两个直方图以频率递减的方式绘制这两种模式的形容词。问题是两者之间存在一些重叠(即在两种模式中都发现了一些形容词),但我只希望每个直方图都以最常用的形容词开头。

这是我在生成单个直方图时用于排序的代码:
THAT_EXT_COMBINED <- within(THAT_EXT_COMBINED,
NODE <- factor(NODE,
levels=names(sort(table(NODE),
decreasing=TRUE))))

我明白为什么这不起作用,因为它结合了两种模式的频率,但我仍然不知道如何解决它。我一直在尝试 reorder() 没有任何运气。有任何想法吗?

这是我用于情节的代码:
graph<-ggplot(THAT_EXT_COMBINED, aes(x=NODE, fill=PATTERN)) + 
geom_histogram(binwidth=.5, position="dodge")
graph + opts(axis.text.x = theme_blank()) + #removes text labels on x-axis
scale_y_continuous("Frequency") +
scale_x_discrete("Adjectives",breaks=NULL)+
opts(title = expression("Distribution of Adjectives"))

结果图的问题在于,形容词在两种模式中并没有按照它们各自的频率进行严格排序。有人能帮忙吗?

所以,这是我用上面的代码创建的图表。我想要的是每个模式的形容词按降序绘制,即两个直方图都按频率降序绘制。我想这归结为一个排序问题,我尝试以不同的方式对因素进行排序,但我无法首先通过 PATTERN 和 NODE 的频率排序:

最佳答案

library(reshape)
df <- cast(THAT_EXT_COMBINED, PATTERN ~.)
colnames(df)[2] <- "Counts"

ggplot(df, aes(reorder(PATTERN, Counts), Counts, fill=PATTERN))
+ geom_bar(position="dodge") # + ...

关于r - 使用ggplot对同一图中的两个直方图进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11349638/

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