我正在尝试绘制两个“ y”轴,第一个轴以%(geom_line())和带有降水量数据的geom_bar()表示“土壤水分”。问题是降水图。我需要“扭转”情节。
我现在有这张图表:
我需要土壤含水量时间序列如上图,而降水量如下图
转换数据不能解决问题,因为我不能转换条形图以使其颠倒地可视化,因为数据是条形而不是点。当我反转绘图时,两个轴都反转了
“ hum_melt10”数据帧是一个包含三列的数据帧:fecha =日期(每天),值=水分含量(%),变量=如果数据来自模型的探针o
“ pp_melt”数据框是一个包含3列的数据框:fecha =日期(每天),value =每天的降水量cm,变量=如果水来自降水还是灌溉
String userInputText=userText.getString().toString();
@Override
onTextChanged(CharSequence s, int start, int before, int count){
compareText(s, userInputText); //compare and do whatever you need to do
previousText = s;
}
谢谢!
答案 0 :(得分:2)
同意@dmp,使用sec_axis
仅在右边添加标签;如果要翻转显示的外观,则需要
scale_y_reverse()
,它将翻转所有内容; 由于只想反转一个数据系列,而不是全部,所以#1出局了。 #3确实可以工作,尽管您仍然需要修改对sec_axis
的调用,所以我只做#2就可以使其变得简单。
library(ggplot2)
mt <- transform(mtcars, rn = 1:nrow(mtcars))
ggplot(mt) +
geom_bar(aes(x = rn, y = drat), stat = "identity") +
geom_line(aes(x = rn, y = disp/100), stat = "identity", color = "red", size = 1) +
scale_y_continuous(sec.axis = sec_axis(~ . * 100))
仅翻转红线,就可以更改美学定义(尽管可以在框架本身中更改)和sec_axis
。
ggplot(mt) +
geom_bar(aes(x = rn, y = drat), stat = "identity") +
geom_line(aes(x = rn, y = 5 - disp/100), stat = "identity", color = "red", size = 1) +
# changes: ^^^ vvv
scale_y_continuous(sec.axis = sec_axis(~ (5 - .) * 100))
(重要的是要记住,翻转点(上例中的5
是基于主轴刻度,而不是新数据。)
未经测试,我怀疑您代码的修复将是这样的(其中9
是从情节推断出来的。)
gpp = ggplot() +
geom_line(data = hum_melt10,aes(x = fecha, y = value, color = variable), size = 1.0) +
xlab("Fecha") +
geom_bar(data = pp_melt, aes(x = fecha, y = 9 - value / 20, fill = variable), stat="identity",position = 'dodge', na.rm = TRUE) +
# changes: ^^^ vvv
scale_y_continuous(name = "Contenido de agua (%)", sec.axis = sec_axis(~(9 - .)*20, name = "pp y riego (cm)")) +
scale_x_date(breaks = '2 month', labels = fecha, date_labels = '%b %y') +
theme(plot.title = element_text(lineheight=.8, face="bold", size = 20)) +
theme_bw() + theme( panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"), aspect.ratio = 0.3)