在管道中使用ggsave

时间:2019-02-12 10:40:03

标签: r ggplot2 magrittr

存储图形后,可以用ggsave保存图形,但是在管道中使用它会出现以下错误。我希望绘制并保存在同一(管道)命令中。

.Select(student => new FetchedStudent
{
    SortingGroup = student.ToSortingGroup(),

    ... // other properties you need
}

public int CompareTo(FetchedStudent x, FetchedStudent y)
{
    switch (x.SortingGroup)
    {
        case 1:
           switch y.SortingGroup:
           {
               case 1: // x and y both in sorting group 1
                  return -UserIdComparer.CompareTo(x.UserId, y.UserId);

               default: // x in sorting group 1, y in 2 / 3 / 4: x smaller
                  return -1;
           }
        case 2:
           switch y.SortingGroup:
           {
               case 1: // x in sorting group 2; y in sorting group 1: x larger
                  return +1;
               case 2: // x and y both in sorting group 2
                  return -nextFollowUpdateComparer.CompareTo(
                       x.Message.NextFollowUpdate,
                       y.Message.NextFollowUpdate);
           }    

我知道ggsave的参数首先是文件名,然后是图形,但是在包装器中切换此参数无效。另外,在ggsave命令中使用'filename ='和'plot ='无效。

  no applicable method for 'grid.draw' applied to an object of class "c('LayerInstance', 'Layer', 'ggproto', 'gg')" 

3 个答案:

答案 0 :(得分:1)

如果您希望在一行中绘制和保存,请尝试

ggplot(diamonds, aes(x=cut)) + 
  geom_bar() +
  ggsave('plot.bmp')

这将显示图并保存。

如果您不想显示绘图,只需将p <-放在开头。

我偶然发现了这种用法,但没有找到任何文档。

答案 1 :(得分:0)

尝试一下:

if(!is_dir('/bucket/FileRun/'.$company->company.'/clients/'.$tk->client->name.'/files/'.$procedure->name.'/'.$date.'/'.$info_type->name))
{
   $retun=@mkdir('/bucket/FileRun/'.$company->company.'/clients/'.$tk->client->name.'/files/'.$procedure->name.'/'.$date.'/'.$info_type->name, 0777, true);
}

编辑:: 也许有人知道一个步骤的答案,以防万一有人将我留在这里:

p<-iris %>% 
  ggplot(aes(Sepal.Length,fill=Species))+geom_bar() 
  p %>% 
  ggsave("sample.png",plot=.)

答案 2 :(得分:0)

正如akrun指出的那样,您需要将所有ggplot括在括号中。您还可以使用dot notation将对象传递到magrittr管道流中第一个参数之外的其他函数参数:

library(magrittr)
library(ggplot2)
data("diamonds")

(
  ggplot(diamonds, aes(x=cut)) +
    geom_bar()
) %>% 
  ggsave("plot.png", . , dpi = 100, width = 4, height = 4)