1

私はいくつかの日付ポイントをプロットしようとしています:

library(ggplot2)
library(plyr)
set.seed(1234)

df <- data.frame(
  c1 = as.character(1:10),
  c2 = sample(seq(from=as.Date("2012-01-01"),to=as.Date("2012-12-01"),by="day"), 10)
)
df <- arrange(df,c2)
qplot(c2,c1,data=df) + scale_x_date(breaks="1 month")

データをソートするために Arrangeを使用しましたが、 ggplotはデータを順番にプロットしません。 ここに画像の説明を入力

予想されるプロットは次のとおりです。

ここに画像の説明を入力

「文字」タイプの自然な並べ替え順序ではなく、指定された順序で c1 列をプロットするように ggplot に指示するにはどうすればよいですか?

セッション情報():

R version 2.14.1 (2011-12-22)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C               LC_TIME=fr_FR.UTF-8        LC_COLLATE=fr_FR.UTF-8    
 [5] LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8    LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] plyr_1.7.1      ggplot2_0.9.2.1

loaded via a namespace (and not attached):
 [1] colorspace_1.2-0   dichromat_1.2-4    digest_0.5.2       grid_2.14.1        gtable_0.1.1       labeling_0.1      
 [7] MASS_7.3-16        memoise_0.1        munsell_0.4        proto_0.3-9.2      RColorBrewer_1.0-5 reshape2_1.2.1    
[13] scales_0.2.2       stringr_0.6.1      tools_2.14.1      

dput(df):

structure(list(c1 = structure(c(8L, 1L, 9L, 2L, 4L, 5L, 3L, 7L, 
10L, 6L), .Label = c("1", "10", "2", "3", "4", "5", "6", "7", 
"8", "9"), class = "factor"), c2 = structure(c(15343, 15378, 
15416, 15508, 15543, 15547, 15548, 15551, 15558, 15625), class = "Date")), .Names = c("c1", 
"c2"), row.names = c(NA, -10L), class = "data.frame")
4

1 に答える 1

3

問題ありません(Rで)。

整数から強制変換された数字の文字ベクトルに対して、日付のランダムな順列をプロットしています。あなたはまさにあなたが求めていたものを手に入れています。R やパッケージを再インストールする必要はありません。「c2」列の日付は、プロットを作成する過程でソートされるため、事前にソートする必要はなく、ソートしても効果はありません。

一方、y 軸のラベルを c1 値にしたいが、y 値を次数統計 (整数次数) にしたい場合は、1:length(c1) をプロットする必要があります。日付を変更し、デフォルトのラベルを変更します。(これは、プロット プロセスの予想される動作を理解する上で依然として困難です。R を再インストールする必要はありませんでした。) これは、基本的なグラフィックス ソリューションです。

> with(df, plot(c2,1:10, yaxt="n"))
> axis(2, at=1:10, labels=df$c1)

ggplot のドキュメントはかなりイライラします。軸ラベルを置き換える方法を見つけるようにしてください。update_labels を試しましたが成功しませんでした。そのシステムでエンティティをプロットするために別の言語を使用することは、私にとって進行中の障壁のままです。多くの人が反対の反応を示し、ggplot2 が多くの人にとってお気に入りのパッケージであることを私は知っています。(編集:これはggplotの世界で目的のプロットを作成するように見えます:)

> p <- qplot(c2, 1:nrow(df),data=df) + scale_x_date(breaks="1 month")
> p
> p + scale_y_discrete( labels=df$c1)
于 2012-12-08T15:58:06.977 に答える