我的数据框有一些数值变量和一些分类factor变量.这些因素的等级顺序不是我希望它们的方式.
numbers <- 1:4
letters <- factor(c("a", "b", "c", "d"))
df <- data.frame(numbers, letters)
df
# numbers letters
# 1 1 a
# 2 2 b
# 3 3 c
# 4 4 d
Run Code Online (Sandbox Code Playgroud)
如果我更改了级别的顺序,则这些字母不再带有相应的数字(我的数据从这一点开始是完全无意义的).
levels(df$letters) <- c("d", "c", "b", "a")
df
# numbers letters
# 1 1 d
# 2 2 c
# 3 3 b
# 4 4 a
Run Code Online (Sandbox Code Playgroud)
我只想更改级别顺序,因此在绘图时,条形图按所需顺序显示 - 可能与默认的字母顺序不同.
我一直在努力订购并在ggplot2中绘制一个简单的数据框作为条形图.
我想绘制出现的数据,以便相应类别(例如'人','男')的值('count'变量)从高到低绘制.
我已经跟随这个网站上的其他主题提出了类似的问题,但是无法让它发挥作用!
## Dataset (mesh2)
#Category Count
#Humans 62
#Male 40
#Female 38
#Adult 37
#Middle Aged 30
#Liver/anatomy & histology 29
#Organ Size 29
#Adolescent 28
#Child 21
#Liver/radiography* 20
#Liver Transplantation* 20
#Tomography, X-Ray Computed 20
#Body Weight 18
#Child, Preschool 18
#Living Donors* 18
#Infant 16
#Aged 14
#Body Surface Area 14
#Regression Analysis 11
#Hepatectomy 10
## read in data (mesh2) as object (mesh2)
mesh2 <- read.csv("mesh2.csv", header = T)
## order data by count …Run Code Online (Sandbox Code Playgroud) 我很困惑为什么箱形图没有在这个情节中订购:
set.seed(200)
x <- data.frame(country=c(rep('UK', 10),
rep("USA", 10),
rep("Ireland", 5)),
wing=c(rnorm(25)))
ggplot(x, aes(reorder(country, wing, median), wing)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

如何根据最高最低中位数(从左到右)订购箱图?
我的同事和我正在尝试根据y值排序堆积条形图,而不是按x字母顺序排列.
样本数据是:
samp.data <- structure(list(fullname = c("LJ", "PR",
"JB", "AA", "NS",
"MJ", "FT", "DA", "DR",
"AB", "BA", "RJ", "BA2",
"AR", "GG", "RA", "DK",
"DA2", "BJ2", "BK", "HN",
"WA2", "AE2", "JJ2"), I = c(2L,
1L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L), S = c(1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, …Run Code Online (Sandbox Code Playgroud) 我注意到在使用绘图创建的直方图中填充条形的默认值是反向字母顺序,而图例按字母顺序排序.我有什么方法可以按字母顺序排序吗?问题在下面的示例图中很明显.奖金问题:我如何将从左到右的条形顺序从字母顺序更改为减少计数总数?谢谢
df <- data.frame(
Site=c("A05","R17","R01","A05","R17","R01"),
Group=c("Fungia","Fungia","Acro","Acro","Porites","Porites"),
Count=c(6,8,6,7,2,9),
Total=c(13,10,15,13,10,15)
)
Site Group Count Total
1 A05 Fungia 6 13
2 R17 Fungia 8 10
3 R01 Acro 6 15
4 A05 Acro 7 13
5 R17 Porites 2 10
6 R01 Porites 9 15
qplot(df$Site,data=df,weight=df$Count,geom="histogram", fill=df$Group, ylim = c(0,16)) +
xlab("Sites") +
ylab("Counts") +
scale_fill_hue(h=c(0,360), l=70, c=70,name = "Emergent Groups")
Run Code Online (Sandbox Code Playgroud)

我试图将计数从高到低和填充颜色排序,以便它们匹配图例的字母顺序.我一直试图用初始帖子的提示调整它几个小时但没有成功.任何有关这方面的帮助将非常感谢!!!
我正在努力在我用R中的ggplot2制作的图表中获得正确的变量排序.
假设我有一个数据帧,例如:
set.seed(1234)
my_df<- data.frame(matrix(0,8,4))
names(my_df) <- c("year", "variable", "value", "vartype")
my_df$year <- rep(2006:2007)
my_df$variable <- c(rep("VX",2),rep("VB",2),rep("VZ",2),rep("VD",2))
my_df$value <- runif(8, 5,10)
my_df$vartype<- c(rep("TA",4), rep("TB",4))
Run Code Online (Sandbox Code Playgroud)
产生下表:
year variable value vartype
1 2006 VX 5.568517 TA
2 2007 VX 8.111497 TA
3 2006 VB 8.046374 TA
4 2007 VB 8.116897 TA
5 2006 VZ 9.304577 TB
6 2007 VZ 8.201553 TB
7 2006 VD 5.047479 TB
8 2007 VD 6.162753 TB
Run Code Online (Sandbox Code Playgroud)
有四个变量(VX,VB,VZ和VD),属于两组变量类型(TA和TB).
我想将值绘制为y轴上的水平条,首先按变量组垂直排序,然后按变量名称排序,按年份分面,x轴上的值和填充颜色对应于变量组.(即在这个简化的例子中,顺序应该是,从上到下,VB,VX,VD,VZ)
1)我的第一次尝试是尝试以下方法:
ggplot(my_df,
aes(x=variable, y=value, fill=vartype, order=vartype)) + …Run Code Online (Sandbox Code Playgroud) 此问题询问是否根据未汇总的表格排序条形图.我的情况略有不同.这是我原始数据的一部分:
experiment,pvs_id,src,hrc,mqs,mcs,dmqs,imcs
dna-wm,0,7,9,4.454545454545454,1.4545454545454546,1.4545454545454541,4.3939393939393945
dna-wm,1,7,4,2.909090909090909,1.8181818181818181,0.09090909090909083,3.9090909090909087
dna-wm,2,7,1,4.818181818181818,1.4545454545454546,1.8181818181818183,4.3939393939393945
dna-wm,3,7,8,3.4545454545454546,1.5454545454545454,0.4545454545454546,4.272727272727273
dna-wm,4,7,10,3.8181818181818183,1.9090909090909092,0.8181818181818183,3.7878787878787876
dna-wm,5,7,7,3.909090909090909,1.9090909090909092,0.9090909090909092,3.7878787878787876
dna-wm,6,7,0,4.909090909090909,1.3636363636363635,1.9090909090909092,4.515151515151516
dna-wm,7,7,3,3.909090909090909,1.7272727272727273,0.9090909090909092,4.030303030303029
dna-wm,8,7,11,3.6363636363636362,1.5454545454545454,0.6363636363636362,4.272727272727273
Run Code Online (Sandbox Code Playgroud)
我只需要一些变量,即mqs和imcs它们分组pvs_id,所以我创建了一个新表:
m = melt(t, id.var="pvs_id", measure.var=c("mqs","imcs"))
Run Code Online (Sandbox Code Playgroud)
我可以将其绘制为条形图,其中可以看到MQS和IMCS之间的相关性.
ggplot(m, aes(x=pvs_id, y=value))
+ geom_bar(aes(fill=variable), position="dodge", stat="identity")
Run Code Online (Sandbox Code Playgroud)

但是,我希望生成的条形按MQS值从左到右按降序排序.当然,IMCS值应与这些值一起订购.
我怎么能做到这一点?一般来说,给定任何熔融数据帧 - 这对于ggplot2中的图形看起来很有用,而今天我第一次偶然发现它 - 我如何指定一个变量的顺序?
我有一个关于我的数据顺序的问题geom_bar.
这是我的数据集:
SM_P,Spotted melanosis on palm,16.2
DM_P,Diffuse melanosis on palm,78.6
SM_T,Spotted melanosis on trunk,57.3
DM_T,Diffuse melanosis on trunk,20.6
LEU_M,Leuco melanosis,17
WB_M,Whole body melanosis,8.4
SK_P,Spotted keratosis on palm,35.4
DK_P,Diffuse keratosis on palm,23.5
SK_S,Spotted keratosis on sole,66
DK_S,Diffuse keratosis on sole,52.8
CH_BRON,Dorsal keratosis,39
LIV_EN,Chronic bronchities,6
DOR,Liver enlargement,2.4
CARCI,Carcinoma,1
Run Code Online (Sandbox Code Playgroud)
我分配以下colnames:
colnames(df) <- c("abbr", "derma", "prevalence") # Assign row and column names
Run Code Online (Sandbox Code Playgroud)
然后我绘制:
ggplot(data=df, aes(x=derma, y=prevalence)) + geom_bar(stat="identity") + coord_flip()
Run Code Online (Sandbox Code Playgroud)
为什么ggplot2会随机更改数据的顺序.我希望我的数据顺序与我的一致data.frame.
任何帮助深表感谢!
这是我的简单资产数据集:
ID Type Currency Value
a Bond GBP 10
b Bond EUR 20
c Stock GBP 3
d Stock GBP 60
e Bond GBP 8
f Bond USD 39
g Stock USD 1
Run Code Online (Sandbox Code Playgroud)
这是代码:
assets <- read_excel("C:/R/SampleData.xlsx")
g <- ggplot(assets, aes(Currency, Value))
g + geom_col()
Run Code Online (Sandbox Code Playgroud)
这是我得到的情节:

我正在尝试创建相同的图,但条形按值排序(按降序)我该如何实现?我尝试了以下代码:
assets$Currency <- factor(assets$Currency, levels = assets$Currency[order(assets$Value)])
Run Code Online (Sandbox Code Playgroud)
但我收到以下警告消息,并且图表仍未正确排序:
Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, :
duplicated levels in factors are deprecated
Run Code Online (Sandbox Code Playgroud)
谢谢!
对于以下数据集,
Genre Amount
Comedy 10
Drama 30
Comedy 20
Action 20
Comedy 20
Drama 20
Run Code Online (Sandbox Code Playgroud)
我想构建一个ggplot2折线图,其中x轴是Genre,而y轴是所有量的总和(以条件为基础Genre).
我尝试过以下方法:
p = ggplot(test, aes(factor(Genre), Gross)) + geom_point()
p = ggplot(test, aes(factor(Genre), Gross)) + geom_line()
p = ggplot(test, aes(factor(Genre), sum(Gross))) + geom_line()
Run Code Online (Sandbox Code Playgroud)
但无济于事.