相关疑难解决方法(0)

如何在ggplot2的右侧放置转换后的比例?

我正在创建一个图表,显示湖水位随时间的变化.我在下面附上了一个简单的例子.我想在图的右侧添加一个刻度(刻度线和注释),以英尺为单位显示高程.我知道ggplot2不会允许两个不同的比例(参见2 y轴的绘图,左边的一个y轴,右边的另一个y轴),但因为这是相同比例的转换,有没有办法做这个?我更喜欢继续使用ggplot2而不必恢复到plot()函数.

library(ggplot2)
LakeLevels<-data.frame(Day=c(1:365),Elevation=sin(seq(0,2*pi,2*pi/364))*10+100)
p <- ggplot(data=LakeLevels) + geom_line(aes(x=Day,y=Elevation)) + 
  scale_y_continuous(name="Elevation (m)",limits=c(75,125)) 
p
Run Code Online (Sandbox Code Playgroud)

r ggplot2

19
推荐指数
2
解决办法
2万
查看次数

ggplot2顶部的y轴和x轴颠倒的图

我正在尝试以ggplot2y轴和x轴颠倒的方式绘制图。我过去常常scale_y_reverse()将y轴反转,但无法弄清楚如何将x轴放在顶部而不是底部。

dfn <- read.table(header=T, text='
supp dose length
  OJ  0.5  13.23
  OJ  1.0  22.70
  OJ  2.0  26.06
  VC  0.5   7.98
  VC  1.0  16.77
  VC  2.0  26.14
')

library(ggplot2)
p1 <- ggplot(data=dfn, aes(x=dose, y=length, group=supp, colour=supp)) + geom_line() + geom_point()
p1 <- p1 + scale_y_reverse()
print(p1)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

r ggplot2

5
推荐指数
2
解决办法
2411
查看次数

ggplot2 2.1.0破坏了我的代码?现在,辅助变换轴显示不正确

前一段时间,我询问是否要在ggplot中添加辅助变换的x轴,Nate Pope提供了ggplot2中描述的出色解决方案plot顶部添加辅助变换的x轴

该解决方案对我来说非常有效,我又返回了它,希望它可以用于新项目。不幸的是,该解决方案在ggplot2的最新版本中无法正常工作。现在,运行完全相同的代码将导致轴标题“剪切”,以及刻度线和标签重叠。这是一个示例,问题以蓝色突出显示:

在此处输入图片说明

可以使用以下代码来复制此示例(这是Nate Pope以前工作出色的代码的精确副本):

library(ggplot2)
library(gtable)
library(grid)

LakeLevels<-data.frame(Day=c(1:365),Elevation=sin(seq(0,2*pi,2*pi/364))*10+100)

## 'base' plot
p1 <- ggplot(data=LakeLevels) + geom_line(aes(x=Elevation,y=Day)) + 
  scale_x_continuous(name="Elevation (m)",limits=c(75,125)) +
  ggtitle("stuff") +
  theme(legend.position="none", plot.title=element_text(hjust=0.94, margin = margin(t = 20, b = -20)))

## plot with "transformed" axis
p2<-ggplot(data=LakeLevels)+geom_line(aes(x=Elevation, y=Day))+
  scale_x_continuous(name="Elevation (ft)", limits=c(75,125),
                     breaks=c(90,101,120),
                     labels=round(c(90,101,120)*3.24084) ## labels convert to feet
  )

## extract gtable
g1 <- ggplot_gtable(ggplot_build(p1))
g2 <- ggplot_gtable(ggplot_build(p2))

## overlap the panel of the 2nd plot …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 gtable

5
推荐指数
2
解决办法
1030
查看次数

将x或y轴与刻度标签一起移动到单个ggplot的中间(无刻面)

我在Excel中制作了以下图表:

在此输入图像描述

但后来我想我会用ggplot让它变得更漂亮.我到目前为止:

在此输入图像描述

如果你很好奇,数据基于我的回答,虽然这并不重要.该图是标准的ggplot2构造,具有一些预处理,并且通过中间的x轴的粗线是用p + geom_hline(aes(yintercept=0))(p是ggplot对象)实现的.

我觉得Excel图中的轴配置更好.它强调0线(当数据是金钱时很重要)并且因为你不必从底部一直跟随线条,因此更容易找到截距.这也是人们在纸上或纸板上绘图时绘制轴的方式.

也可以在ggplot中像这样移动轴吗?我不仅想要这条线,而且还要移动刻度线标签.如果有,怎么样?如果不是,是技术还是设计的原因?如果按设计,为什么做出决定?

plot r axes ggplot2

5
推荐指数
2
解决办法
2247
查看次数

ggplot2 - 在绘图顶部添加辅助y轴

对于出版物,我需要在现有图中添加第二个y轴.我遇到过如何做到这一点的方法(https://rpubs.com/kohske/dual_axis_in_ggplot2).但是,我并不太了解编码.我找不到一种方法来使它成为正确的y轴也显示,而不是顶部边框.我的编码中缺少什么?这是我的虚拟数据:

df1 <- structure(list(month = structure(1:12, .Label = c("Apr", "Aug", 
"Dec", "Feb", "Jan", "Jul", "Jun", "Mar", "May", "Nov", "Oct", 
"Sep"), class = "factor"), RI = c(0.52, 0.115, 0.636666666666667, 
0.807, 0.66625, 0.34, 0.143333333333333, 0.58375, 0.173333333333333, 
0.5, 0.13, 0), sd = c(0.327566787083184, 0.162634559672906, 0.299555225848813, 
0.172887246493199, 0.293010848165827, 0.480832611206852, 0.222785397486759, 
0.381610777775321, 0.219393102292058, 0.3, 0.183847763108502, 
0)), .Names = c("month", "RI", "sd"), class = "data.frame", row.names = c(NA, 
-12L))

df2<-structure(list(month = structure(c(5L, 4L, 8L, 1L, 9L, 7L, 6L, 
2L, 12L, 11L, 10L, 3L), .Label …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 gtable

3
推荐指数
1
解决办法
2839
查看次数

标签 统计

ggplot2 ×5

r ×5

gtable ×2

plot ×2

axes ×1