ggplot2 x-y轴相交,同时保留轴标签

ThatQuantDude

我昨天发布了我的原始问题,在这里得到了完美的解决

原始帖子

我在代码中做了一些补充

library(lubridate)
library(ggplot2)
library(grid)

### Set up dummy data.
dayVec     <- seq(ymd('2016-01-01'), ymd('2016-01-10'), by = '1 day')
dayCount   <- length(dayVec)
dayValVec1 <- c(0,-0.22,0.15,0.3,0.4,0.10,0.17,0.22,0.50,0.89)
dayValVec2 <- c(0,0.2,-0.17,0.6,0.16,0.41,0.55,0.80,0.90,1.00)
dayValVec3 <- dayValVec2
dayDF      <- data.frame(Date = rep(dayVec, 3),
                     DataType = factor(c(rep('A', dayCount), rep('B',   dayCount), rep('C', dayCount))),
                     Value = c(dayValVec1, dayValVec2, dayValVec3))


ggplot(dayDF, aes(Date, Value, colour = DataType)) +
theme_bw() +
ggtitle("Cumulative Returns \n") +
scale_color_manual("",values = c("#033563", "#E1E2D2", "#4C633C"),
                    labels = c("Portfolio ", "Index ", "In-Sample ")) +
geom_rect(aes(xmin = ymd('2016-01-01'),
            xmax = ymd('2016-01-06'),
            ymin = -Inf,
            ymax = Inf
            ), fill = "#E1E2D2", alpha = 0.03, colour = "#E1E2D2") +
geom_line(size = 2) +
scale_x_datetime(labels = date_format('%b-%d'), 
               breaks = date_breaks('1 day'),
               expand = c(0,0)) +
scale_y_continuous( expand = c(0,0), labels = percent) +
theme(axis.text.x  = element_text(angle = 90), 
    axis.title.x = element_blank(), 
    axis.title.y = element_blank(),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    axis.line  = element_line(size = 1),
    axis.ticks = element_line(size = 1),
    axis.text  = element_text(size = 20, colour = "#033563"),
    axis.title.x = element_text(hjust = 2),
    plot.title = element_text(size = 40, face = "bold", colour = "#033563"),
    legend.position = 'bottom',
    legend.text = element_text(colour = "#033563", size = 20),
    legend.key  = element_blank()
    )

产生这个输出

图形

我仍然无法正常工作的唯一事情是x轴的位置。我希望x轴位于y = 0,但仍将x轴标签保留在图表下方,与它的excel版本完全相同。我知道数据集不一样,但是我手头没有原始数据,因此产生了一些虚拟数据。希望这值得一个新问题,谢谢。

> grid.ls(grid.force())
GRID.gTableParent.12660
background.1-5-7-1
spacer.4-3-4-3
panel.3-4-3-4
grill.gTree.12619
  panel.background.rect.12613
  panel.grid.minor.y.zeroGrob.12614
  panel.grid.minor.x.zeroGrob.12615
  panel.grid.major.y.polyline.12617
  panel.grid.major.x.zeroGrob.12618
geom_rect.rect.12607
GRID.polyline.12608
panel.border.rect.12610
axis-l.3-3-3-3
axis.line.y.polyline.12631
axis
axis-b.4-4-4-4
axis.line.x.polyline.12624
axis
xlab.5-4-5-4
ylab.3-2-3-2
guide-box.6-4-6-4
title.2-4-2-4
> grid.gget("axis.1-1-1-1", grep=T)
NULL
用户名

ggplot2很难做到这一点。下面是一种以交互方式解决此问题的方法。基本上,您只需抓住绘图的相关部分(轴线和刻度线)并重新放置它们。

如果p是你的情节

p
grid.force()
# grab the relevant parts - have a look at grid.ls()
tck <- grid.gget("axis.1-1-1-1", grep=T)[[2]] # tick marks
ax <- grid.gget("axis.line.x", grep=T)        # x-axis line

# add them to the plot, this time suppressing the x-axis at its default position
p + lapply(list(ax, tck), annotation_custom, ymax=0) + 
          theme(axis.line.x=element_blank(), 
                axis.ticks.x=element_blank())

哪个产生

在此处输入图片说明

快速说明:的最新版本ggplot2具有不显示轴的设计决定。同样,对的更改axis.line不会自动向下传递到xy轴。因此,我调整了您的主题以分别定义axis.line.x定义axis.line.y

siad,也许更容易(并且更强大?)geom_hline如注释中所建议的那样使用,并geom_segment适用于滴答作响。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将x轴放在ggplot2图表的顶部

来自分类Dev

ggplot2:在图的顶部添加辅助变换的x轴

来自分类Dev

多个ggplot2图形上的全局x / y轴

来自分类Dev

使用ggplot2在x轴的月份之间添加刻度

来自分类Dev

ggplot2图形x轴和线标签

来自分类Dev

ggplot2图形x轴和线标签

来自分类Dev

R:删除多余的X轴值(ggplot2)

来自分类Dev

ggplot2中的x轴格式

来自分类Dev

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

来自分类Dev

ggplot2注释,x轴中带有日期

来自分类Dev

ggplot2中x轴的顺序标签跟随数值

来自分类Dev

防止ggplot2自动订购x轴

来自分类Dev

从ggplot2中的x轴删除空白行

来自分类Dev

ggplot2:扩展x轴的限制后缺少x标签?

来自分类Dev

R ggplot2 x轴断裂

来自分类Dev

如何添加x轴标签ggplot2 r

来自分类Dev

添加自定义的x轴以绘制ggplot2和y轴

来自分类Dev

按组交替显示条形颜色,同时交替显示背景色并保持x轴标签顺序(ggplot2)

来自分类Dev

ggplot2:经典图,带有用于x和y轴的黑色标签

来自分类Dev

从ggplot2中的ggplot x轴上删除NA

来自分类Dev

如何在R ggplot2中基于y轴值对x轴重新排序

来自分类Dev

ggplot2输出图像围绕x轴标签居中

来自分类Dev

ggplot2中的x轴格式

来自分类Dev

ggplot2中x轴的顺序标签跟随数值

来自分类Dev

延长X轴间隔ggplot2

来自分类Dev

对boxplot数据进行分组,同时将其各自的X轴标签保留在R中的ggplot2中

来自分类Dev

更改X轴中断ggplot2

来自分类Dev

ggplot2 x-y轴相交,同时保留轴标签

来自分类Dev

R ggplot2 x轴断裂