简体   繁体   English

使用ggplot2格式化轴和折线图标签

[英]Format axis and label for line graph using ggplot2

Here is my sample data: 这是我的示例数据:

Singer <- c("A","B","C","A","B","C")
Rank <- c(1,2,3,3,2,1)
Episode <- c(1,1,1,2,2,2)
Votes <- c(0.3,0.28,0.11,0.14,0.29,0.38)

data <- data_frame(Episode,Singer,Rank,Votes)
data$Episode <- as.character(data$Episode)

I would like to make a line graph to show the performance of each singer. 我想制作一个折线图以显示每个歌手的表现。

I tried to use ggplot2 like below: 我尝试使用ggplot2,如下所示:

ggplot(data,aes(x=Episode,y=Votes,group = Singer)) + geom_line()

I have two questions: 我有两个问题:

  1. How can I format the y-axis as percentage? 如何将y轴格式化为百分比?
  2. How can I label each dot in this line graph as the values of "Rank", which allows me to show rank and votes in the same graph? 如何在此线图中将每个点标记为“等级”的值,从而使我能够在同一张图中显示等级和票数?

To label each point use: 要标记每个点,请使用:

geom_label(aes(label = Rank))
# or
geom_text(aes(label = Rank), nudge_y = .01, nudge_x = 0) 

To format the axis labels use: 要格式化轴标签,请使用:

scale_y_continuous(labels = scales::percent_format())
# or without package(scales):  
scale_y_continuous(breaks = (seq(0, .4, .2)), labels = sprintf("%1.f%%", 100 * seq(0, .4, .2)), limits = c(0,.4))

Complete code: 完整的代码:

library(ggplot2)
library(scales)

ggplot(data, aes(x = factor(Episode), y = Votes, group = Singer)) + 
  geom_line() +
  geom_label(aes(label = Rank)) +
  scale_y_continuous(labels = scales::percent_format())

在此处输入图片说明


Data: 数据:

Singer <- c("A","B","C","A","B","C")
Rank <- c(1,2,3,3,2,1)
Episode <- c(1,1,1,2,2,2)
Votes <- c(0.3,0.28,0.11,0.14,0.29,0.38)

data <- data_frame(Episode,Singer,Rank,Votes)
# no need to transform to character bc we use factor(Episode) in aes(x=..)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM