相关疑难解决方法(0)

为什么ggplot2图例不会结合手动填充和缩放值?

预期的行为

如果我使用ggplot2创建一个绘图并使用单独的,比如形状和填充刻度来描绘数据,我希望图例将描绘"白色"填充点(看起来是空心的)和"黑色"填充点(不看起来)之间空心).

在下面的示例代码中,Windows的图例项应该是一个白色空心点,Linux的图例应该是黑色填充点

实际行为

"操作系统"下的图例项描述了两个视觉上相同的点,用于明显不同的操作系统,其点在图上用不同的填充清晰地绘制.在下面的示例代码中,Windows和Linux在图例中显示为无法区分的黑色空心点,即使它们在绘图本身上的绘制方式也不同.

样本图

图例中带有破碎填充行为的样本图http://f.cl.ly/items/2w2i09103Q2p0i3M1Y2d/BrokenFillRplot.png

示例代码

library(ggplot2)

x <- rnorm(n = 30)
y <- rnorm(n = 30)
treatment <- rep(c("red", "green", "blue"), times = 20)
operatingSystem <- rep(c("Windows", "Linux"), times = 30)

dd <- data.frame(x, y, treatment, operatingSystem)

fillScaleValues <- c(
  "Windows" = "white",
  "Linux" = "black"
)

shapeScaleValues <- c(
  "red" = 21,
  "green" = 22,
  "blue" = 23
)

p <- ggplot(
      aes(x = x, 
          y = y,
          shape = factor(treatment),
          fill = factor(operatingSystem)
      ), data …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

在一个图表中绘制两个图表类型(区域和线),并使用单独的图例

我已经搜索了我的问题的解决方案但是找不到直接回答我问题的解决方案.例如,我已经看到:在ggplot2中组合条形图和折线图(双轴)在GGPlot和其他几个图形的一个图上组合条形图+线图,当它们接近时,它们并没有完全达到我的目标我到了.

我正在尝试创建一个包含两个图表,一个区域图和一个线图的图表.这两个图共享y轴.我一直在尝试使用长数据帧格式和宽数据帧格式,但我无法使图表工作,同时也产生一个图例.我知道要获得一个图例,人们通常会想要使用长格式并将变量键指定为color =fill =,但因为我希望每个变量都在一个单独的绘图类型中,所以我认为没办法完成.

我已成功创建了我想要的图表,但它不包含图例,代码看起来很笨重.谁能提供一些指导?请参阅下面的我的尝试.以下数据示例.

尝试1:长格式

library(tidyverse)
growthUR_long %>% 
  ggplot(aes(x = Date)) + 
  geom_area(data = (. %>% filter(growthUR_long$Type == "Growth")), aes(y = value), fill = "blue", color = "black") +
  labs(x = "Date", y = "Percent") + 
  geom_line(data = (. %>% filter(growthUR_long$Type == "UR")), aes(y = value), color = "black")
Run Code Online (Sandbox Code Playgroud)

长输出

尝试2:宽格式

growthUR_wide %>%  
  ggplot(aes(x = Date)) + 
  geom_area(aes(y = Growth), fill = "blue", color = "black") +
  labs(x …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

ggplot2:如何在图例中创建虚线?

我正在尝试创建一个包含2个密度的直线和2个虚线密度的ggplot。2个密度是蓝色,其他2个是红色。我的情节应该包括关于这些密度的带有颜色和线条的图例。

尽管我认为必须有一个简单的解决方案,但我无法在图例中产生虚线。我试图基于多个线程(例如herehere)解决问题,但是我的ggplot代码已经很复杂,这些线程的示例以不同的方式使用ggplot。因此,我没有设法重现这些线程的结果。

这是我到目前为止所做的可复制示例。最后一行scale_linetype_manual似乎不起作用。如何在图例中为grp3和grp4产生虚线?

library(ggplot2)

set.seed(123)

# Example data
N <- 1000
x1 <- rnorm(N, 5)
x2 <- rnorm(N, 10)
x3 <- rnorm(N, 15)
x4 <- rnorm(N, 20)

ggplot() + 
  stat_density(aes(x = x1, col = "grp1"), position = "identity", geom = "line") + 
  stat_density(aes(x = x2, col = "grp2"), position = "identity", geom = "line") +
  stat_density(aes(x = x3, col = "grp3"), position = "identity", geom = "line", linetype = 2) +
  stat_density(aes(x = x4, …
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2

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

ggplot:设置具有多个属性的图例标题

我想更改使用下面的代码生成的图例的标题。请注意,我知道我可以将 data.frame 和美学直接放在 ggplot() 函数调用中,但在本示例中我没有这样做,因为在我的应用程序中,我需要具有不同数据集和美学的多个层。

d = data.frame(t=rep(1:10,2),
               value = rep(1:2,each=10),
               dose_mpk = factor(rep(1:2,each=10)))

g = ggplot() 
a = aes(x=t,y=value,group=dose_mpk,color=dose_mpk,shape=dose_mpk)
g = g + geom_point(data=d,a)
g = g + geom_line(data=d,a)
print(g)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我不明白更改图例标题的正确方法。我尝试了下面的代码,它给出了下面的图,这不是我想要的 - 我只是想更改标题,而不是创建双图例。由于我原来的图例既涉及形状又涉及颜色,因此我不确定如何更改此“组合”标题。我应该怎么办?

g + guides(color = guide_legend("dose (mg/kg)"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r legend ggplot2

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

标签 统计

ggplot2 ×4

r ×4

legend ×2