R ggplot2缩放x离散导致我的x轴消失?
我有一个数据帧:R ggplot2缩放x离散导致我的x轴消失?,r,ggplot2,R,Ggplot2,我有一个数据帧: dput(df) structure(list(row = c("(BSO,0)", "(BSO,1)", "(BSO,2)", "(BSO,3)", "(BSO,4)", "(BSO,5)", "(BSO,6)", "(CAR,0)", "(CAR,1)", "(CAR,2)", "(CAR,3)", "(CAR,4)", "(GMA,0)", "(GMA,1)", "(GMA,2)", "(GMA,3)", "(GMA,4)", "(GRA,0)", "(GRA,1
dput(df)
structure(list(row = c("(BSO,0)", "(BSO,1)", "(BSO,2)", "(BSO,3)",
"(BSO,4)", "(BSO,5)", "(BSO,6)", "(CAR,0)", "(CAR,1)", "(CAR,2)",
"(CAR,3)", "(CAR,4)", "(GMA,0)", "(GMA,1)", "(GMA,2)", "(GMA,3)",
"(GMA,4)", "(GRA,0)", "(GRA,1)", "(GRA,2)", "(GRA,3)", "(GRS,7)",
"(MAI,0)", "(MAI,1)", "(MAI,3)", "(MAI,5)", "(MAI,6)", "(MAI,7)",
"(MAI,8)", "(ONI,0)", "(ONI,1)", "(ONI,4)", "(ONI,41)", "(ONI,45)",
"(ONI,48)", "(ONI,49)", "(POT,0)", "(POT,1)", "(POT,2)", "(POT,3)",
"(POT,5)", "(POT,6)", "(POT,8)", "(POT,9)", "(SBA,3)", "(SBA,5)",
"(SBA,7)", "(SBA,8)", "(SBA,9)", "(SBT,0)", "(SBT,1)", "(SBT,2)",
"(SBT,11)", "(SBT,14)", "(SBT,19)", "(SBT,32)", "(SBT,39)", "(SCR,1)",
"(SCR,2)", "(SCR,3)", "(SWH,5)", "(SWH,7)", "(SWH,8)", "(SWH,9)",
"(TLP,0)", "(TLP,6)", "(TLP,12)", "(TLP,45)", "(TLP,48)", "(TLP,49)",
"(VEG,1)", "(VEG,2)", "(VEG,8)", "(WBA,8)", "(WCR,0)", "(WCR,1)",
"(WWH,2)", "(WWH,3)", "(WWH,5)", "(WWH,7)", "(WWH,8)", "(WWH,9)",
"(WWH,29)"), numofpics = c(1484, 1299, 1923, 3494, 2259, 934,
1962, 209, 2218, 63, 16, 2178, 69, 165, 491, 147, 217, 114, 988,
4518, 969, 26, 45, 479, 1102, 103, 69, 557, 144, 514, 1398, 59,
494, 217, 610, 113, 872, 779, 152, 364, 20, 774, 995, 631, 23,
145, 34, 66, 107, 448, 307, 17, 68, 757, 51, 47, 3787, 318, 578,
431, 214, 167, 20, 24, 261, 378, 154, 58, 20, 70, 925, 22, 42,
21, 35, 142, 703, 750, 76, 643, 278, 273, 27), numofparcels = c(49,
40, 63, 94, 68, 32, 61, 8, 32, 2, 1, 30, 2, 7, 19, 6, 10, 5,
27, 52, 27, 1, 2, 20, 25, 4, 3, 23, 5, 19, 25, 2, 17, 7, 20,
5, 29, 27, 4, 11, 1, 20, 25, 21, 1, 5, 1, 3, 4, 16, 10, 1, 2,
27, 1, 1, 34, 12, 15, 16, 8, 6, 1, 1, 10, 9, 6, 2, 1, 3, 12,
1, 1, 1, 1, 5, 16, 19, 3, 19, 8, 10, 1), crop = c("BSO", "BSO",
"BSO", "BSO", "BSO", "BSO", "BSO", "CAR", "CAR", "CAR", "CAR",
"CAR", "GMA", "GMA", "GMA", "GMA", "GMA", "GRA", "GRA", "GRA",
"GRA", "GRS", "MAI", "MAI", "MAI", "MAI", "MAI", "MAI", "MAI",
"ONI", "ONI", "ONI", "ONI", "ONI", "ONI", "ONI", "POT", "POT",
"POT", "POT", "POT", "POT", "POT", "POT", "SBA", "SBA", "SBA",
"SBA", "SBA", "SBT", "SBT", "SBT", "SBT", "SBT", "SBT", "SBT",
"SBT", "SCR", "SCR", "SCR", "SWH", "SWH", "SWH", "SWH", "TLP",
"TLP", "TLP", "TLP", "TLP", "TLP", "VEG", "VEG", "VEG", "WBA",
"WCR", "WCR", "WWH", "WWH", "WWH", "WWH", "WWH", "WWH", "WWH"
), bbch = c(0L, 1L, 2L, 3L, 4L, 5L, 6L, 0L, 1L, 2L, 3L, 4L, 0L,
1L, 2L, 3L, 4L, 0L, 1L, 2L, 3L, 7L, 0L, 1L, 3L, 5L, 6L, 7L, 8L,
0L, 1L, 4L, 41L, 45L, 48L, 49L, 0L, 1L, 2L, 3L, 5L, 6L, 8L, 9L,
3L, 5L, 7L, 8L, 9L, 0L, 1L, 2L, 11L, 14L, 19L, 32L, 39L, 1L,
2L, 3L, 5L, 7L, 8L, 9L, 0L, 6L, 12L, 45L, 48L, 49L, 1L, 2L, 8L,
8L, 0L, 1L, 2L, 3L, 5L, 7L, 8L, 9L, 29L)), .Names = c("row",
"numofpics", "numofparcels", "crop", "bbch"), row.names = c(NA,
83L), class = "data.frame")
我希望用ggplot
绘图,如下所示:
ggplot(data=df, aes(x=row, y=numofpics, fill = crop)) +
geom_bar(stat='identity') +
scale_x_discrete(breaks = unique(df$crop), labels = unique(df$crop))
为了生成这样的图形:
唯一的例外是图例标签显示在X轴上。为了我的生活,我不明白为什么他们反而消失了
虽然我的数据不是数字/连续的,但我已尝试将其转换为系数:
ggplot(data=df, aes(x=factor(row), y=numofpics, fill = factor(crop))) +
geom_bar(stat='identity') +
scale_x_discrete(breaks = unique(df$crop), labels = unique(df$crop))
这产生了同样的结果
我从另一个线程尝试了这个解决方案:
ggplot(data=df, aes(x=factor(row), y=numofpics, fill = factor(crop))) +
geom_bar(stat='identity') +
scale_x_discrete(limits=unique(df$crop))
这是谁干的
有人能给我点化一下吗?根据你所描述的,看起来你可能想要这样的东西,但如果这不是你想要的,请告诉我
library(tidyverse)
ggplot(data=df, aes(x=str_extract(row, "[0-9]+"), y=numofpics, fill = crop)) +
geom_bar(stat='identity') +
facet_grid(. ~ crop, scales="free_x", space="free_x") +
guides(fill=FALSE) +
theme_bw() +
theme(strip.text.x=element_text(angle=-90),
axis.text.x=element_text(size=rel(0.8)))
根据您描述的内容,您可能需要类似的产品,但如果您没有想到这一点,请告诉我
library(tidyverse)
ggplot(data=df, aes(x=str_extract(row, "[0-9]+"), y=numofpics, fill = crop)) +
geom_bar(stat='identity') +
facet_grid(. ~ crop, scales="free_x", space="free_x") +
guides(fill=FALSE) +
theme_bw() +
theme(strip.text.x=element_text(angle=-90),
axis.text.x=element_text(size=rel(0.8)))
您正在设置
aes(x=row,
,这意味着x轴标签和断点将来自row
列,但在缩放x\u离散
中,您正在设置断点=唯一(df$crop)
。因为row
的值与crop
的值不同(即,您设置的中断值在行中不存在,轴标签将消失。如果您希望x轴标签为裁剪的值,则设置aes(x=裁剪,
)(您还可以删除对缩放x_离散的调用).是的,我知道你的意思,但不,这不是我想做的。我想让图表如图所示,但将crop
中的标签分别放在相同颜色的条簇下。我确信这是可能的,但我只是不确定语法是否正确。看看你的数据,可能scale\x\u离散(labels=df$crop)
将在此处工作。通常,关键是确保标签的顺序
向量与原始x轴标签的顺序完全对应。执行缩放x_离散(labels=df$crop)
产生了我首先试图摆脱的结果,即整个scale\u x\u discrete
业务-一个杂乱无章的x轴。标签
向量的顺序不能完全对应于原始x轴数据,因为有83行,分为17个类别。我希望显示83行就像我上传的图表一样,但标签是基于它们所属的17个类别。你是说用ggplot
和scale\u x_discrete
?这是不可能的吗?你的问题一开始并不清楚,但看起来你想要的是一个跨越所有行的裁剪
标签与每个裁剪一起使用的es
。一种方法是使用facetting。有关详细信息,请参阅我的答案,并让我知道这是否是您的想法。您正在设置aes(x=行,
,意味着x轴标签和中断将来自行
列,但在缩放x_离散
中,您正在设置中断=唯一(df$crop)
。因为行
的值与裁剪
的值不同(即,行
中不存在您设置的中断值),轴标签消失。如果希望x轴标签为裁剪
的值,则设置aes(x=crop,
(您还可以删除对缩放x\u离散
)的调用).是的,我知道你的意思,但不,这不是我想做的。我想让图表如图所示,但将crop
中的标签分别放在相同颜色的条簇下。我确信这是可能的,但我只是不确定语法是否正确。看看你的数据,可能scale\x\u离散(labels=df$crop)
将在此处工作。通常,关键是确保标签的顺序
向量与原始x轴标签的顺序完全对应。执行缩放x_离散(labels=df$crop)
产生了我首先试图摆脱的结果,即整个scale\u x\u discrete
业务-一个杂乱无章的x轴。标签
向量的顺序不能完全对应于原始x轴数据,因为有83行,分为17个类别。我希望显示83行就像我上传的图表一样,但标签是基于它们所属的17个类别。你是说用ggplot
和scale\u x_discrete
?这是不可能的吗?你的问题一开始并不清楚,但看起来你想要的是一个跨越所有行的裁剪
标签每种作物都会有一个小切口。一种方法是使用小切口。请参阅我的答案了解详细信息,并让我知道这是否是您的想法。您好@eipi10,这几乎是理想的结果。出于某种原因,尽管您的解决方案会压扁一些作物仓,尤其是ONI、SBT和TLP。插入标签后,这一点变得非常明显通过+geom_text(aes(标签=bbch),位置=position_道奇(宽度=0.9),vjust=-0.25,对每列
。知道为什么会发生这种数据挤压吗?对不起,这是我的错误。我没有解释代码中的行
>9,因此只提取每个行号的第一位数字。结果是在同一个位置多个条被过度抽签(当您运行geom_text
并在同一x轴位置看到多个bbch
值时,就会发现这一点)。从“[0-9]”更改为“[0-9]+”
可以解决这一问题。在第二个图表中,我添加了geom_text
行以进行说明,并切换到使用因子(bbch)
对于x
美学。aaaa狡猾的正则表达式,我必须学会如何一劳永逸地使用它。无论如何,先生,你是一位真正的大师!嗨@eipi10,这几乎是理想的结果。因此