0

PostgreSQL から csv でエクスポートされたテーブルがあり、R で積み上げ棒グラフを作成したいと考えています。R での最初のプロジェクトです。

これが私のデータと私がやりたいことです:

ここに画像の説明を入力

それは、地域の特定のプロバイダーのフィーダー バス サービスの品質です。電車の利用者ごとに、駅でのバスと電車の同期に基づいてサービス品質を割り当て、理想的または非常に優れたサービス、適切なサービス、不十分なサービス、またはサービスなしの利用者の割合を計算します。まったく(gis.stackexchangeのその質問にリンクされています)

つまり、最初の列を x 軸のラベルとして使用し、ヘッダーをカテゴリとして使用するようなものです。データは、各行ですでに 100% に正規化されています。

Excel では、数回クリックするだけで済みます。コードを数行入力することは、すでに非常に長い plpgsql スクリプトの最終結果であるため、気にしません。Excel に移行するのではなく、コーディングを続けたいと思います (私もやるべきことがたくさんあります)。

そこで、Nathan Yau の「Visualize This」と本「R in Action」の例を使用して積み上げ棒グラフを作成しようとしましたが、うまくいきませんでした。通常、彼らの例では、R で集計して使用するデータを使用します。私のはすでに集約されています。

それで、私は最終的にRで動作するものを思いつきました:

ここに画像の説明を入力

しかし、データをかなり変換する必要がありました:

ここに画像の説明を入力

テーブルを転置し、現在の行 (元の列) 識別子を削除する必要がありました。

これが私のコードです:

# load libraries
library(ggplot2)
library(reshape2)

# load data
stl <- read.csv("D:/TEMP/rabat/_stl_rabattement_stats_mtl.csv", sep=";", header=TRUE)

# reshape for plotting
stl_matrix <- as.matrix(stl)

# make a quick plot
barplot(stl_matrix, border=NA, space=0.1, ylim=c(0, 100), xlab="Trains", ylab="%",
main="Qualité du rabattement, STL", las = 3)

元のcsvを使用して同じ結果を得る方法はありますか?

私はここで少し迷っています...

ありがとう!!!!

4

2 に答える 2

1

マトリックスを手動で転置したようです。これは、関数を使用して R で実行できますt()

行の後に次の行を追加しますas.matrix(stl)

stl_matrix <- t(stl_matrix)

于 2013-11-01T15:10:09.830 に答える
1

ggplot2andreshapeライブラリを試してください。必要なチャートを取得できるはずです

stl$train_order <- as.numeric(rownames(stl))
stl.r <- melt(stl, id.vars = c("train_no", "train_order"))
stl.r$train_no <- factor(
    stl.r$train_no, 
    levels = stl$train_no[order(stl$train_order)])    
ggplot(stl.r, aes(x = factor(train_no), y = value, fill = variable)) + geom_bar(stat = 'identity')
于 2013-11-01T15:15:33.170 に答える