私はこのようなテストデータセットを持っている:すなわちためggplot2でy軸の2倍のラベル付けとスケールを行う方法は?
df_test <- data.frame(
proj_manager = c('Emma','Emma','Emma','Emma','Emma','Alice','Alice'),
proj_ID = c(1, 2, 3, 4, 5, 6, 7),
stage = c('B','B','B','A','C','A','C'),
value = c(15,15,20,20,20,70,5)
)
準備:
input <- select(df_test, proj_manager, proj_ID, stage, value) %>%
filter(proj_manager=='Emma') %>%
do({
proj_value_by_manager = sum(distinct(., proj_ID, value)$value);
mutate(., proj_value_by_manager = proj_value_by_manager)
}) %>%
group_by(stage) %>%
do({
sum_value_byStage = sum(distinct(.,proj_ID,value)$value);
mutate(.,sum_value_byStage= sum_value_byStage)
}) %>%
mutate(count_proj = length(unique(proj_ID)))
commapos <- function(x, ...) {
format(abs(x), big.mark = ",", trim = TRUE,
scientific = FALSE, ...) }
可視化:
ggplot (input, aes(x=stage, y = count_proj)) +
geom_bar(stat = 'identity')+
geom_bar(aes(y=-proj_value_by_manager),
stat = "identity", fill = "Blue") +
scale_y_continuous(labels = commapos)+
coord_flip() +
ylab('') +
geom_text(aes(label= sum_value_byStage), hjust = 5) +
geom_text(aes(label= count_proj), hjust = -1) +
labs(title = "Emma: 4 projects| $90M Values \n \n Commitment|Projects") +
theme(plot.title = element_text(hjust = 0.5)) +
geom_hline(yintercept = 0, linetype =1)
私の質問は以下のとおりです。
- なぜy値が正しく表示されないのですか?例えばCは20とラベル付けされていますが、スケール上で100に近づいています。
- ラベルの位置を調整してバーの上に置く方法
- 「プロジェクトの数」の非常に短いバーと ' 「プロジェクト価値」はうまく表示できますか?
ありがとうございました!
ありがとうございました!助けになる。 3番目の質問では、私の実際のデータは2000年以上の価値を持つプロジェクトを持っているため、プロジェクトの数を非常に少なくすることができます。 – Daisywang
@Daisywangこれを調整する簡単な方法はありません。http://stackoverflow.com/questions/3099219/plot-with-2-y-axes-one-y-axis-on-the-left-and-another-右上のy軸。私の提案はあなたのデータを再スケーリングすることです、またはあなたはそれの上にプロジェクトの数を持っている青いバーの隣に別のプロットをすることができます。 –