2017-06-06 28 views
0

ggplot - 複数の列で、x軸のラベルを注文

以下
df <- read.table(textConnection(" 
tier make model sales 
entry Toyota Yeti 10000 
entry Honda Jazz 8000 
entry Nissan Sunny 5000 
entry Honda Amaze 4000 
entry Toyota Model10 3500 
entry Nissan Beat 2000 
Mid Honda Civic 4000 
Mid Toyota Corolla 3000 
Mid Honda Accord 2500 
Mid Nissan Xtrail 2200 
Mid Toyota Camry 1800 
Mid Nissan Moon 800 
"), header = TRUE) 

> df 
    tier make model sales 
1 entry Toyota Yeti 10000 
2 entry Honda Jazz 8000 
3 entry Nissan Sunny 5000 
4 entry Honda Amaze 4000 
5 entry Toyota Model10 3500 
6 entry Nissan Beat 2000 
7 Mid Honda Civic 4000 
8 Mid Toyota Corolla 3000 
9 Mid Honda Accord 2500 
10 Mid Nissan Xtrail 2200 
11 Mid Toyota Camry 1800 
12 Mid Nissan Moon 800 

のようなテーブルと私はプロットを取得する以下のように私は絵にggplotを使用して、モデルによって

ggplot(df, aes(x=model, y=sales)) + 
    geom_point() 

を販売をプロットenter image description here

予想通り、modelのx軸ラベルは、レベルごとに昇順になっています。Accordが最初に来て、Yeti最後に

> str(df) 
'data.frame': 12 obs. of 4 variables: 
$ tier : Factor w/ 2 levels "entry","Mid": 1 1 1 1 1 1 2 2 2 2 ... 
$ make : Factor w/ 3 levels "Honda","Nissan",..: 3 1 2 1 3 2 1 3 1 2 ... 
$ model: Factor w/ 12 levels "Accord","Amaze",..: 12 7 10 2 8 3 5 6 1 11 ... 
$ sales: int 10000 8000 5000 4000 3500 2000 4000 3000 2500 2200 ... 
> 

しかし、私は別のmodelの順序でプロット必要 - テーブルは階層によって注文された場合に得られる、作り、販売(降順)。下のコードのように、このテーブルの注文を得ることができます - プロットでmodelのx軸ラベルの同じ順序を取得するにはどうすればよいですか?

> df[with(df, order(tier, make, -sales)),] 
    tier make model sales 
2 entry Honda Jazz 8000 
4 entry Honda Amaze 4000 
3 entry Nissan Sunny 5000 
6 entry Nissan Beat 2000 
1 entry Toyota Yeti 10000 
5 entry Toyota Model10 3500 
7 Mid Honda Civic 4000 
9 Mid Honda Accord 2500 
10 Mid Nissan Xtrail 2200 
12 Mid Nissan Moon 800 
8 Mid Toyota Corolla 3000 
11 Mid Toyota Camry 1800 
> 

答えて

2

モデル変数の因子レベルの次数を変更することができます。このように:

df <- df[with(df, order(tier, make, -sales)),] 
df$model <- factor(df$model, levels = unique(df$model)) 
ggplot(df, aes(x=model, y=sales)) + 
    geom_point() 

最初の行は行の順序を変更します。 2行目は実際の並べ替えです。 unique(df$model)は変数の現在の順序であり、これを因子のレベルとして使用することで、この順序でデータをプロットすることができます。

関連する問題