解決策以上のことは、なぜ簡単にすべきなのかを理解したいのですが、それは実際にはありません。ggplot2:yearmonスケールとgeom_bar
[私が問題に触れ異なるポストからのコードの一部を借りていますが、それは私が好きではなかった解決策になってしまった]
library(ggplot2)
library(xts)
library(dplyr)
library(scales)
csvData <- "dt,status
2015-12-03,1
2015-12-05,1
2015-12-05,0
2015-11-24,1
2015-10-17,0
2015-12-18,0
2016-06-30,0
2016-05-21,1
2016-03-31,0
2015-12-31,0"
tmp <- read.csv(textConnection(csvData))
tmp$dt <- as.Date(tmp$dt)
tmp$yearmon <- as.yearmon(tmp$dt)
tmp$status <- as.factor(tmp$status)
### Not good. Why?
ggplot(tmp, aes(x = yearmon, fill = status)) +
geom_bar() +
scale_x_yearmon()
### Almost good but long-winded and ticks not great
chartData <- tmp %>%
group_by(yearmon, status) %>%
summarise(count = n()) %>%
as.data.frame()
ggplot(chartData, aes(x = yearmon, y = count, fill = status)) +
geom_col() +
scale_x_yearmon()
最初のプロットは、すべて間違っています。 2番目はほぼ完璧です(X軸上のダニは大きくありませんが、私はそれで生きることができます)。 geom_bar()
はカウントジョブを実行するはずです。私は手動で2番目のチャートで実行する必要がありますか?
私の質問は:なぜ最初のグラフはとても悪いですか?何かを示唆するための警告があります(「position_stackは重複しないx間隔を必要とします」)が、実際には理解できません。おかげさまで
私の個人的なANSWER
これは私が学んだことである(あなたのすべてのおかげでそんなに!):
- それらを扱う
scale_#_yearmon
またはscale_#_date
、残念ながらggplotがあっても連続した数字としてのオブジェクトタイプ。これにより、geom_bar
は使用できなくなります。 geom_histogram
トリックを行う可能性があります。しかし、あなたは麻酔の関連部分をコントロールできなくなります。- 一番下の行:あなたは
- をグラフ前にXTSまたはlubridate(あなたがggplot2を使用する場合)を確認してくださいグループ/合計する必要はありません、私が達成しようとしていた何のために本当に便利です。私はどんな連続的な事件でも - 日付的に - 彼らが完璧だと思う。
library(ggplot2) library(dplyr) library(scales) csvData <- "dt,status 2015-12-03,1 2015-12-05,1 2015-12-05,0 2015-11-24,1 2015-10-17,0 2015-12-18,0 2016-06-30,0 2016-05-21,1 2016-03-31,0 2015-12-31,0" tmp <- read.csv(textConnection(csvData)) tmp$dt <- as.Date(tmp$dt) tmp$yearmon <- as.Date(format(tmp$dt, "%Y-%m-01")) tmp$status <- as.factor(tmp$status) ### GOOD chartData <- tmp %>% group_by(yearmon, status) %>% summarise(count = n()) %>% as.data.frame() ggplot(chartData, aes(x = yearmon, y = count, fill = status)) + geom_col() + scale_x_date(labels = date_format("%h-%y"), breaks = seq(from = min(chartData$yearmon), to = max(chartData$yearmon), by = "month"))
はすべてで、私は私が後だ(XTSまたはlubridateの必要性がないか注意してください)完全にんいるこれで終了しました
私は最初のプロットと2番目のプロットの間に違いは見られません。プロットの画像を投稿し、最初のプロットについて何が間違っていたかを指摘できますか? –
要求が完了しました。それはプラットフォーム/パッケージのバージョンで何らかの問題になることがありますか?私はWIN10にいる。 Rバージョン3.4.0(2017-04-21); ggplot2 2.2.1 –
代わりに、ggplot(tmp、aes(x = floor_date(dt、 "month")、fill = status))+ geom_bar()+ scale_x_date(labels = date_format "))、これはより良いx軸を与える。 –