2017-06-21 2 views
1

Beim Exportieren eines Diagramms mit ggsave() werden fast alle Elemente (insbesondere Text) meines ggplot im Vergleich zum Anzeigen und Exportieren meines Diagramms in R Studio vergrößert. Der Grund, warum ich ggsave() verwende, ist, dass ich die 300 dpi und die 85mm Breite bekommen kann, die für die Veröffentlichung benötigt werden.R ggplot ggsave erzeugt verschiedene Zeichenelementgrößen als einfach in RStudio zu exportieren

Wie kann ich sicherstellen, dass die ggsave() Ausgabe übereinstimmt, was RStudio exportiert?

1. RStudio Export (richtigen Proportionen):

RStudio export

2. ggsave() Export (falsche Proportionen):

ggsave export

3. Meine Code

library(ggplot2) 
library(cowplot) 
library(grid) 

# Make plot 
fig4 <- ggplot() 
# Add Landings lines 
fig4 <- 
    fig4 + geom_line(
    data = NorRus, 
    aes(year, tonnes, color = fishing_entity), 
    size = 0.75 
    ) 
# Change colors. 
fig4 <- 
    fig4 + scale_color_manual(
    values = bluesPalette, 
    name = NULL 
    ) 
# adjust y axis labels, remove scientific notation 
fig4 <- 
    fig4 + scale_y_continuous(
    expand = c(0,0), #removes stupid gap btwn plot & axes 
    breaks = seq(0, 2500000, 500000), 
    limits = c(0, 2500000), 
    labels = divide1000() # divide units by 1000 w function specified above 
) 
# adjust x axis labels 
fig4 <- 
    fig4 + scale_x_continuous(
    expand = c(0,0), # removes stupid gap btwn plot & axes 
    breaks = seq(1950, 2014, 10), 
    limits = c(1950, 2014) 
) 
# Add titles to axes 
fig4 <- 
    fig4 + labs(
    y = Land10e3, 
    x = "Year" 
) 
# Adjust axis margins 
fig4 <- 
    fig4 + theme(
    axis.title.y=element_text(margin=margin(0,20,0,0)), 
    axis.title.x=element_text(margin=margin(20,0,0,0)) 
) 
# Adjust text sizes 
fig4 <- 
    fig4 + theme(
    legend.title=element_text(size=10), # Legend title 
    legend.text=element_text(size=8), # Legend items 
    axis.title=element_text(size=10), # Axis titles 
    axis.text=element_text(size=8) # Axis labels 
) 
# move legend to inside 
fig4 <- 
    fig4 + theme(
    legend.justification = c(1, 1), 
    legend.position = c(1, 1) 
) 
# Plot 
plot(fig4) 

# Export plot w ggsave 
ggsave(
    "R exports/fig4-ggsave.tiff", 
    plot = fig4, 
    device = "tiff", 
    dpi=150, 
    width=85, 
    height=53, 
    units = "mm" 
) 

ich mein Problem vermuten, hat etwas zu tun mit element_text() in Punkteinheiten zu sein, während die Einheiten I mit ggsave() in mm angegeben haben.

Diese beiden Fragen helfen mir sehr dabei, mein Problem zu lösen, aber ich weiß nicht, wie ich sie als Lösung implementieren soll!

  1. ggplots2 ggsave text size not changing
  2. ggplot geom_text font size control

Antwort

1

ändert diese Argumente:

width=85, maybe to 850 
height=53, maybe to 530 

mit einer Breite und Höhe von Plot Manipulieren geben Sie Ausgang benötigt.

+0

Das produziert dies: http://imgur.com/a/EO4pG Leider muss ich auch die 85 mm Breite für die Veröffentlichung Anforderungen halten. Ich nehme an, ich könnte immer mit der Breite und den Höhen in R herumspielen, bis es gut aussieht, und dann die Größe außerhalb von R ändern, aber das ist hacky. – spops

+3

Ok so meine hacky Behelfslösung ist dies: 'width = 85 * (14/5), height = 53 * (14/5),' der das Verhältnis in meiner zweiten verketteten Frage vorgesehen ist. Bis jetzt, bis etwas Besseres herauskommt, wende ich dieses Verhältnis auf alle meine Ggsaves an und verändere dann die Größe auf 85 mm in einem externen Programm. – spops

+2

@spops Ich hatte das gleiche Problem mit Plots zu meiner Diplomarbeit. Nach langer Zeit hatte ich den Code satt und begann manuell mit dem Exportieren von Plots (Export -> Bild speichern -> Breite und Höhe einstellen, bis es gut aussieht -> Foto im fertigen Dokument verkleinern) Wenn es nur wenige Plots gibt, ist es nicht so schlimm scheint :) Aber ich würde auch gerne einen besseren Weg sehen, um dieses Problem zu lösen. – Piotr