2016-08-28 4 views
-2

私はいくつかのテーブルをプロットする必要があります。プロセスを自動化するために、ファイル名を使用して各プロットのタイトルとして挿入したいと思います。たとえば、ファイル名は、以下の命名規則があるggplot2 - ファイル名を使用してタイトルを挿入

:私は、次のコードを使用しています現時点では

Almourol daily discharge ref. period 

almourol_gfdl-esm2m_rcp8p5_daily_ref.csv 

マイ所望の出力を、すべきではそのように見えます

almourol_ref <- read.table("almourol_gfdl-esm2m_rcp8p5_daily_ref.csv", header = TRUE, sep = ";", fill = TRUE) 
library(ggplot2) 
library(reshape2) 
library(tools) 
title = file_path_sans_ext("almourol_gfdl-esm2m_rcp8p5_daily_ref.csv") 
title = strsplit(title, "_") 
title = noquote(title) 
title = paste(title[1],title[4], "discharge",title[5], period) 
almourol_ref <- melt(almourol_ref, id.vars="DAYS") 
png("almourol_ref.png", width = 600, height = 400) 
p <- ggplot(almourol_ref, aes(DAYS,value, col=variable)) 
p + geom_line(size = 0.1) + 
    geom_hline(aes(yintercept = 0), linetype="dotted") + 
    ylab("Runoff [m3/s]") + 
    xlab("Day") + 
    theme_bw() + 
    theme(legend.key = element_blank())+ 
    scale_color_discrete(name='Models GCM_HM') + 
    ggtitle(title) 

残念ながら、それは動作しませんし、任意のタイトルがグラフに追加されます。どんなアイデアやヒントも歓迎すべきものではありません。

データの最小限の例をご覧ください:

DAYS;GWFDisi;GSWIM;GGAP3;GHYPE;GVIC;HWFDisi;HSWIM;HGAP3;HHYPE;HVIC;IWFDisi 
1;-308.78;-183.19;-232.48;-233.22;-150.38;-596.49;-311.58;-571.41;-387.63;-315.43;-451.26 
2;-348.52;-192.39;-314.68;-231.67;-147.88;-563.14;-335.39;-558.46;-423.13;-355.14;-501.58 
3;-416.24;-211.68;-436.83;-232.73;-164.87;-537.54;-327.19;-465.70;-455.62;-403.40;-458.43 
4;-459.95;-217.75;-486.37;-228.07;-202.23;-560.68;-359.07;-497.20;-481.41;-430.87;-475.76 
5;-437.58;-219.63;-494.34;-223.27;-249.18;-613.41;-371.47;-457.38;-499.42;-433.01;-446.02 
6;-470.20;-228.91;-503.95;-217.41;-292.13;-618.50;-381.87;-505.86;-505.63;-430.23;-440.30 
7;-500.54;-245.91;-527.91;-226.86;-319.97;-599.95;-381.06;-416.05;-474.56;-431.76;-526.32 
+0

あなたの場合、「任意のタイトル」の意味を詳しく説明できますか? –

+0

@RomanLuštrik-私の場合、「任意のタイトル」は何もプロットに追加されないことを意味し、動作しません。 – steve

+0

これは動作するようです: 'ggplot(mtcars、aes(mpg、wt))+ geom_point()+ ggtitle(" New plot title ")'貼り付けが簡単なデータの例を提供できますか? –

答えて

2

あなたはラインによって、コード、行をステップ実行した場合、何かが働いていないことは明らかであろう。あなたの場合、strsplitの結果は、スライスされたベクトルを保持する長さ1のリストです。これを解決するには、最初の要素のみをサブセット化するか、おそらくunlist(title)を使用します。

title <- "almourol_gfdl-esm2m_rcp8p5_daily_ref.csv" 
title <- strsplit(title, "_")[[1]] 
title <- noquote(title) 
title <- paste(title[1],title[4], "discharge",title[5], "period") 
title 

[1] "almourol daily discharge ref.csv period" 
関連する問題