我正在尝试这个简单的任务,其中我希望向 ggplot 对象添加两条垂直线,具有不同的颜色和不同的线型,以及在图例中正确指定的颜色/线。我一直在看这篇文章,其中geom_vline绘制了两个 s 。如果您将其中一种线型更改为实线,图例将错误地显示线型。它将所有线条变成实心。
library(ggplot2)
library(ggthemes)
ggplot(aes(x = Sepal.Length), data = iris) +
geom_histogram(color = 'black', fill = NA) +
geom_vline(aes(xintercept = median(iris$Sepal.Length),
color = "median"),
linetype = "solid", size = 1) +
geom_vline(aes(xintercept = mean(iris$Sepal.Length),
color = "mean"),
linetype = "dashed", size = 1) +
scale_color_manual(
name = "statistics",
values = c(median = "blue", mean = "red"))
Run Code Online (Sandbox Code Playgroud)
我还简单地尝试了以下内容,没有添加任何数据:
library(ggplot2)
library(ggthemes)
ggplot() + theme_bw() +
geom_vline(aes(xintercept = c(0, 0.2),
color = c("Zero", "Pooled")),
size = 1, linetype = c("solid", "dotdash")) +
scale_color_manual(
name = "statistics",
values = c(Zero = "black", Pooled = "blue"))
Run Code Online (Sandbox Code Playgroud)
其中线型在图例上错误显示。
谁能告诉我发生了什么以及如何让线型正确显示?
您可以linetype输入aes像设置颜色一样进行调用
ggplot(aes(x = Sepal.Length), data = iris) +
geom_histogram(color = 'black', fill = NA) +
geom_vline(aes(xintercept = median(iris$Sepal.Length),
color = "median", linetype = 'median'),
size = 1) +
geom_vline(aes(xintercept = mean(iris$Sepal.Length),
color = "mean", linetype = "mean"),
size = 1) +
scale_color_manual(
name = "statistics",
values = c(median = "blue", mean = "red")) +
scale_linetype_manual(
name = "statistics",
values = c(median = "solid", mean = "dashed"))
Run Code Online (Sandbox Code Playgroud)
当您指定哪个值与哪个线型匹配时使用命名向量也有帮助 - 我认为您的第二个示例失败的原因是在图例中, ggplot 按字母顺序将线型分配给级别。
输出:
| 归档时间: |
|
| 查看次数: |
1749 次 |
| 最近记录: |