如何在折线图上添加端点数据值和图表旁边的百分比变化header?
How to add data values of end points on line chart and the percentage change next to the chart header?
我有以下数据框 (df1) 及其对应的 ggplot2
折线图。我的 R
代码如下:
codes_list <- read.csv("codes_list.csv", stringsAsFactors=FALSE)
inner_join(df1, codes_list, by = c('ticker' = 'code')) %>%
ggplot(aes(x = ref.date, y = price.close)) +
geom_line() +
facet_wrap(~desc, scales = 'free_y')
"codes_list.csv" 是在 df1
中找到的代码缩写的查找文件。
df1
的摘录如下:
price.close ticker ref.date
18.01 AAN 2020-12-21
17.13 AAN 2020-12-22
16.75 AAN 2020-12-23
16.78 AAN 2020-12-24
65.62 CROX 2020-12-21
64.76 CROX 2020-12-21
64.59 CROX 2020-12-21
62.59 CROX 2020-12-21
gplot2
图表的摘录如下所示。
我想在折线图上添加以下内容:
- 起始值及其对应的结束值
- 折线图旁边的百分比变化 header
预期输出如下所示:
请问我怎样才能做到这一点?
您可以通过 ticker
和 ref.date
arrange
数据,在代码值中添加百分比变化,创建一个新的 label
列,仅保留第一个和最后一个值并绘制数据。
library(dplyr)
library(ggplot2)
df %>%
mutate(ref.date = as.Date(ref.date)) %>%
arrange(ticker, ref.date) %>%
group_by(ticker) %>%
mutate(ticker = paste(ticker, round((last(price.close) -
first(price.close))/last(price.close) * 100, 2), '%'),
label = replace(round(price.close,2), -c(1, n()), '')) %>%
ggplot(aes(x = ref.date, y = price.close, label = label)) +
geom_line() + geom_text() +
facet_wrap(~ticker, scales = 'free_y')
根据您的实际数据,您可能需要使用 hjust
、vjust
、nudge_x
和 [=19= 等参数调整标签在 geom_text
中的位置].
我有以下数据框 (df1) 及其对应的 ggplot2
折线图。我的 R
代码如下:
codes_list <- read.csv("codes_list.csv", stringsAsFactors=FALSE)
inner_join(df1, codes_list, by = c('ticker' = 'code')) %>%
ggplot(aes(x = ref.date, y = price.close)) +
geom_line() +
facet_wrap(~desc, scales = 'free_y')
"codes_list.csv" 是在 df1
中找到的代码缩写的查找文件。
df1
的摘录如下:
price.close ticker ref.date
18.01 AAN 2020-12-21
17.13 AAN 2020-12-22
16.75 AAN 2020-12-23
16.78 AAN 2020-12-24
65.62 CROX 2020-12-21
64.76 CROX 2020-12-21
64.59 CROX 2020-12-21
62.59 CROX 2020-12-21
gplot2
图表的摘录如下所示。
我想在折线图上添加以下内容:
- 起始值及其对应的结束值
- 折线图旁边的百分比变化 header
预期输出如下所示:
请问我怎样才能做到这一点?
您可以通过 ticker
和 ref.date
arrange
数据,在代码值中添加百分比变化,创建一个新的 label
列,仅保留第一个和最后一个值并绘制数据。
library(dplyr)
library(ggplot2)
df %>%
mutate(ref.date = as.Date(ref.date)) %>%
arrange(ticker, ref.date) %>%
group_by(ticker) %>%
mutate(ticker = paste(ticker, round((last(price.close) -
first(price.close))/last(price.close) * 100, 2), '%'),
label = replace(round(price.close,2), -c(1, n()), '')) %>%
ggplot(aes(x = ref.date, y = price.close, label = label)) +
geom_line() + geom_text() +
facet_wrap(~ticker, scales = 'free_y')
根据您的实际数据,您可能需要使用 hjust
、vjust
、nudge_x
和 [=19= 等参数调整标签在 geom_text
中的位置].