R包含“的排序列”;“宽度x高度”;

R包含“的排序列”;“宽度x高度”;,r,R,我有一个包含宽度和高度的数据表。我想在条形图中打印每个宽度和高度的频率。我设法做到了这一点,但我希望条形图从低到高的维度开始,按照宽度x高度进行排序 这就是我所拥有的: 正确的排序如下所示: 我的代码: # Library library(ggplot2) # 1. Read data df = read.csv2(text = "ID;Width;Height 1;255;298 2;600;900 3;333;459 4;333;459 5;800;574 6;512;768

我有一个包含宽度和高度的数据表。我想在条形图中打印每个宽度和高度的频率。我设法做到了这一点,但我希望条形图从低到高的维度开始,按照宽度x高度进行排序

这就是我所拥有的:

正确的排序如下所示:

我的代码:

# Library
library(ggplot2)

# 1. Read data
df = read.csv2(text = "ID;Width;Height
1;255;298
2;600;900
3;333;459
4;333;459
5;800;574
6;512;768
7;768;1024
8;768;1024
9;800;574
10;512;768
11;640;1136
12;1200;1600
13;255;298
14;600;900
15;600;900
16;255;298
17;512;768
18;600;900
19;255;298
20;600;900
21;768;1024
22;255;298
23;640;1136
24;640;1136
25;333;459
26;255;340
27;1200;1600
28;640;1136
29;255;298
30;255;298")

# 2. Add width and height together as Dimensions
df_dimensions <- paste(df$Width, "x", df$Height)
df_dimensions <- as.data.frame(table(df_dimensions))
colnames(df_dimensions)[which(names(df_dimensions) == "df_dimensions")] <- "Dimensions" # Set column name 
df_dimensions <- df_dimensions[order(df_dimensions$Dimensions),] # order
df_dimensions

# 3. Plot bar chart
ggplot(df_dimensions, aes(x = Dimensions, y = Freq)) + 
        geom_bar(stat = "identity") + 
          theme_classic() +
  coord_flip() +
          ggtitle("Dimensions (Width x Height)") +
          xlab("Dimensions") + 
          ylab("Frequency") +
          geom_text(aes(label = Freq), hjust = -0.5)


#库
图书馆(GG2)
# 1. 读取数据
df=read.csv2(text=“ID;宽度;高度
1;255;298
2;600;900
3;333;459
4;333;459
5;800;574
6;512;768
7;768;1024
8;768;1024
9;800;574
10;512;768
11;640;1136
12;1200;1600
13;255;298
14;600;900
15;600;900
16;255;298
17;512;768
18;600;900
19;255;298
20;600;900
21;768;1024
22;255;298
23;640;1136
24;640;1136
25;333;459
26;255;340
27;1200;1600
28;640;1136
29;255;298
30;255;298")
# 2. 将宽度和高度一起添加为尺寸标注
df_尺寸<代码>a 0)
连同(a)[序号(a),1),],
条形图(Freq,horiz=TRUE,names.arg=paste(宽度,高度,sep='x'))

a 0)
连同(a)[序号(a),1),],
条形图(Freq,horiz=TRUE,names.arg=paste(宽度,高度,sep='x'))


创建一列,其中包含以下区域:

dims <- matrix(as.numeric(unlist(strsplit(as.character(df_dimensions$df_dimensions), ' x '))), ncol = 2, byrow = T)
df_dimensions$area <- dims[,1]*dims[,2]

创建具有以下区域的列:

dims <- matrix(as.numeric(unlist(strsplit(as.character(df_dimensions$df_dimensions), ' x '))), ncol = 2, byrow = T)
df_dimensions$area <- dims[,1]*dims[,2]

为什么255*340在255*298之前?我刚刚在Paint中进行了排序,它不应该在之前。所以你的排列不正确?我更新了排序的图像为什么255*340在255*298之前?我刚刚在Paint中进行了排序,不应该是以前。所以你的安排不正确?我更新了排序的图像。可以用ggplot2完成吗?类似于我代码中的ggplot2吗?可以用ggplot2完成吗?
dims <- matrix(as.numeric(unlist(strsplit(as.character(df_dimensions$df_dimensions), ' x '))), ncol = 2, byrow = T)
df_dimensions$area <- dims[,1]*dims[,2]
ggplot(df_dimensions, aes(x = reorder(Dimensions,-area), y = Freq)) + 
  geom_bar(stat = "identity") + 
  theme_classic() +
  coord_flip() +
  ggtitle("Dimensions (Width x Height)") +
  xlab("Dimensions") + 
  ylab("Frequency") +
  geom_text(aes(label = Freq), hjust = -0.5)