首页 > 解决方案 > 只有 x(或 y)轴的热图

问题描述

我正在对金融时间序列进行一些数据可视化。

我基本上想要下面的热图,但没有小时轴,即我想显示每个工作日的平均价格变化,看看在统计上一周中的某些日子是否有更好的升值/贬值机会。

我原来的情节在这里:

在此处输入图像描述

我的代码是:

ggplot(Change , aes(x=Hour, y=Day, fill = Change)) + 
+     geom_tile(color = "white", size = 0.2) + 
+     scale_x_discrete(expand=c(0,0)) + 
+     scale_y_discrete(expand=c(0,0)) + 
+     scale_fill_viridis(name="Price Range", option = "plasma") + 
+     coord_equal() + 
+     labs(x="Hour", y=NULL, title=sprintf("price range by hr")) + 
+     theme_tufte(base_family="Helvetica") +
+     theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

标签: rggplot2heatmap

解决方案


也许您可以尝试重塑您的数据框,以便每个数据只有一个数据点(例如价格变化的子项,或一天开始和一天结束之间的价格变化。我认为它会有一个可重复的例子很有用)。

由于您没有提供,我以 7 天和一些时间段为例

数据

day <- c("monday" , "tuesday", "wednsday", "thursday", "friday", "saturday", "sunday") 
dt <- as.data.frame(matrix(c(1,2,3,4,5, 6,7,8,9,10, 1,2,5,4,3, 2,3,5,7,6, 4,8,9,7,8, 9,8,9,9,1, 3,4,3,1,2) , nrow = 5 , ncol=7, byrow=TRUE)) 
colnames(dt) <- c("monday" , "tuesday", "wednsday", "thursday", "friday", "saturday", "sunday") 
rownames(dt) <- c("0:00", "2.00", "4.00", "8.00", "10.00") dt <- as.data.frame(colSums(dt))

推荐阅读