标签: geom-vline

R ggplot:图例中的“交叉效应”(show.legend = NA 不会消失)

以下代码会导致图例中出现不需要的交叉效应。

ggplot() + 
  geom_vline(aes(xintercept=1,colour="vertical"), show.legend = NA) +
  geom_hline(aes(yintercept=1,colour="horizontal"), show.legend = NA)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我读了几篇文章,说添加show.legend = NA可以使这种效果消失,但这对我来说不起作用。

编辑: 为避免混淆,我不希望传说消失!我只希望图例中的“十字架”消失,所以它应该显示如下项目:

在此处输入图片说明

在此处输入图片说明

r ggplot2 geom-hline geom-vline

5
推荐指数
1
解决办法
481
查看次数

将 geom_vline 扩展到绘图之外

我试图扩展我的 ggplot 图中的 geom_vline 线,以超出绘图空间并进入轴区域。这样做的目的是让这些线分隔轴标签,以便它可以与旁边的另一个图对齐(见下文)。

一些简短的示例代码(我有更多的行,因此需要水平线来保持直线):

library(ggplot2)
library(cowplot)
library(dplyr)

#play data set
cars.data <- mtcars %>%
      mutate(car_name = rownames(mtcars)) %>%
      slice(1:6)

#I would like vlines to be extend in this plot
p1 <- ggplot(cars.data, aes(x = car_name, y = hp)) +
    geom_point() +
    scale_x_discrete(position = "top") +
    coord_flip() +
    geom_vline(aes(xintercept = seq(1.5, 6.5, 1)), color = "gray60") +
    xlab("")


p2 <- ggplot(cars.data, aes(y = car_name, x = 1)) +
  geom_text(aes(label = disp)) +
  xlab("disp") +
  geom_hline(aes(yintercept = seq(1.5, 6.5, 1)), …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 geom-vline

5
推荐指数
1
解决办法
1183
查看次数

如何使用ggplot2绘制与绘图线交叉的水平线和垂直线?

我用一条线连接点绘制了一个图。在此图中,我想从 x 轴上的一点到与绘图线的交点绘制一条垂直线。在交点处,我想绘制一条到 Y 轴的水平线。我搜索了几个网站、论坛和教程,但仍然做不到。有什么帮助吗?

library(ggplot2)

X <- 1:5
Y <- c(2, 6, 4, 7, 12)

DF <- data.frame(X, Y)

ggplot(data = DF,
       aes(x = X,
           y = Y)) +
  geom_point() +
  geom_line() +
  geom_vline(xintercept = 4.5,
             linetype = 2)
Run Code Online (Sandbox Code Playgroud)

到目前为止的结果:

在此输入图像描述

期望结果的示例:

在此输入图像描述 在此输入图像描述

r line ggplot2 geom-hline geom-vline

5
推荐指数
1
解决办法
2199
查看次数

当数据为POSIXct时,ggplotly()不显示geom_vline / geom_hline

我正在尝试制作带有“时间标记”的图形。这些时间标记是某些日期的垂直线。时间数据是POSIXct格式。我想使用Plotly的出色交互界面,并在其中使用ggplot对象。

问题是在使用ggplotly()之后,这些“时间标记”没有显示出来。我已经尝试过了,plotly::add_segments()但是没有用。这是两个可复制的示例:

1.使用非POSIXct数据可以正常工作

# dummy dataset
df2 = data.frame(id = 1:10, measure = runif(10, 0, 20))
events2 = data.frame(number = c(2,3,8))
# ggplot graph
p2 = ggplot() + geom_line(data = df2, aes(x = id, y = measure))  +
  geom_vline(data = events2, aes(xintercept = events2$number), color = "red")
p2
# plotly graph that displays the geom_vline properly
ggplotly(p2)
Run Code Online (Sandbox Code Playgroud)

2.使用POSIXct时,数据无法显示正确的结果

# dummy dataset
df = data.frame(date = seq(as.POSIXct("2017-07-01", tz = "UTC", format = "%Y-%m-%d"),
                           as.POSIXct("2018-04-15", tz = "UTC", format = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 posixct plotly geom-vline

4
推荐指数
1
解决办法
571
查看次数

在时间序列图中标记一段时间

首先,让我们创建一些假数据:

d <- c("2019-01-01", "2019-01-02", "2019-01-03", "2019-01-04", "2019-01-03", "2019-04-06", "2019-04-03", "2019-05-07", "2019-05-03", "2019-05-03", "2019-05-03", "2019-05-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-06-03", "2019-07-03", "2019-07-03", "2019-07-04", "2019-08-03", "2019-09-05", "2019-09-03", "2019-09-03", "2019-09-06", "2019-09-08", "2019-10-03", "2019-11-03", "2019-11-03", "2019-11-03", "2019-11-03", "2019-11-03", "2019-11-03", "2019-12-03", "2019-12-03")

df <- data.frame(dates=as.Date(d))
Run Code Online (Sandbox Code Playgroud)

现在,我创建一个时间序列图:

# aggregate data
df_plot <- df %>% mutate(month = lubridate::floor_date(dates, "month")) %>% 
  group_by(month) %>% summarise(count = n())

# plot data
ggplot(aes(x = month, y = count), data = df_plot) + geom_line() +
  scale_x_date() +
  geom_vline(xintercept = …
Run Code Online (Sandbox Code Playgroud)

r time-series ggplot2 geom-vline

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

如何避免同一个散点图上的 geom_vline() 和 geom_hline 图例中的交叉效应?

geom_hline()我使用和创建了一个散点图geom_vline(),该图很好,但图例条目不是我想要的显示方式。图例中的(vline恢复)和hline(阈值)是相互交叉的,令人困惑。我希望恢复图例条目为橙色垂直线,阈值图例条目为水平黑线。

\n

在此输入图像描述

\n

我尝试了其他帖子中建议的几件事,但guide_legend(override.aes())要么show.legend = F更改了上面“类型”部分的图例条目(它删除了行并保留彩色圆圈),要么只是删除了其中一行的图例条目。

\n

这是我当前的代码:

\n
ggplot(data = tst_formule[tst_formule$River != "Roya",], aes(x=Year, y = BRI_adi_moy_transect, shape = River, col = Type)) +  \n  geom_point(size = 3) +   \n  geom_errorbar(aes(ymin = BRI_adi_moy_transect - SD_transect, ymax = BRI_adi_moy_transect + SD_transect), width = 0.4) + \n  scale_shape_manual(values = c(15, 16, 17)) +\n  scale_colour_manual(values = c("chocolate1", "darkcyan")) +  \n  geom_vline(aes(xintercept = Restauration_year, linetype = "Restoration"), colour = "chocolate1") + \n …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 geom-hline geom-vline

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

geom_vline,图例和性能

我想在我的情节上绘制几条垂直线,并为每个相应的 vline 绘制一个图例。

阅读这篇文章后,这是我实现的:

set.seed(99)
df.size <- 1e6
my.df <- data.frame(dist = rnorm(df.size, mean = 0, sd = 2))
library(ggplot2)
ggplot(my.df, aes(x=dist)) + geom_histogram(binwidth = 0.5)

vline1.threshold <- mean(my.df$dist)
vline2.threshold <- mean(my.df$dist) + 3*sd(my.df$dist)
Run Code Online (Sandbox Code Playgroud)

现在的情节:

g <- ggplot(my.df, aes(x = dist)) +
  geom_histogram(binwidth = 0.5) +
  geom_vline(aes(color = "vline1", xintercept = vline1.threshold)) +
  geom_vline(aes(color = "vline2", xintercept = vline2.threshold)) +
  scale_color_manual("Threshold", values = c(vline1 = "red", vline2 = "blue"), labels = c("Mean", "Mean + 3*SD"))
system.time(print(g))
Run Code Online (Sandbox Code Playgroud)

这很有效:

在此处输入图片说明

但它非常慢: …

r ggplot2 geom-vline

2
推荐指数
1
解决办法
483
查看次数

每当向 ggplot 添加垂直/水平线时,如何向 x / y 轴添加标签?

x 轴和 y 轴根据 ggplot 设置的特定间隔进行标记。

如果将水平线或垂直线添加到图中,目标是在该线的精确值处标记 x 或 y 轴。

如何才能做到这一点?

r ggplot2 geom-hline geom-vline

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

标签 统计

geom-vline ×8

ggplot2 ×8

r ×8

geom-hline ×4

line ×1

plotly ×1

posixct ×1

time-series ×1