r - 如何根据此特定条件指定折线图的颜色?
问题描述
我有一个 R 脚本,它从雅虎财经中提取股票价格。R代码没有问题,它们运行得很好。
这是我的 R 代码及其输出的摘录:
df1 %>%
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))/first(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(size=1, color="blue") + geom_text(size = 3, fontface="bold") +
facet_wrap(~ticker, scales = 'free_y')
输出:
但是,我想根据以下条件修改图表的线条颜色:如果百分比变化为负(在本例中为 HUYA -40.14%),则线条颜色必须为红色,否则必须为蓝色休息。
任何帮助将不胜感激。
解决方案
这应该为整条线着色,但没有数据,我无法检查。
为了清晰起见,我将change
其作为单独的列,并在末尾添加了线条以提供正确的颜色并删除指南。
df1 %>%
mutate(ref.date = as.Date(ref.date)) %>%
arrange(ticker, ref.date) %>%
group_by(ticker) %>%
mutate(change = last(price.close)/first(price.close) - 1,
ticker = paste(ticker, round(change*100, 2), '%'),
label = replace(round(price.close,2), -c(1, n()), '')) %>%
ggplot(aes(x = ref.date, y = price.close, label = label)) +
geom_line(aes(colour = ifelse(change >= 0, "blue", "red")), size = 1) +
geom_text(size = 3, fontface="bold") +
facet_wrap(~ticker, scales = "free_y") +
scale_colour_manual(values = c("blue", "red")) +
guides(colour = "none")
推荐阅读
- mysql - 如何在 MySQL 中获得精确的十进制值而不进行四舍五入
- javascript - 如何从 Angular 视图中的字符串翻译 unicode?
- ipython - 无法在 Spyder 的 IPython 控制台中查看已执行的单元代码
- c# - 以编程方式更改单元格值时触发的 DataGridView 事件是什么?(不是由用户编辑)
- c# - 在 Azure API for VM 中,有没有一种方法可以用一种方法定义多个现有数据磁盘?
- rest - 自定义操作控制器中的验证
- php - 我将所有文件和文件夹从 wordpress 根目录移动到 wordpress 子目录
- javascript - 根据多个对象的值对数组进行排序
- bash - 使用扩展模式匹配的bash case语句语法错误
- python - Python> 如何:从第二个“while True”返回到第一个“while True”?