【问题标题】:Heatmap with just x (or y) axis只有 x(或 y)轴的热图
【发布时间】:2020-01-27 14:25:46
【问题描述】:

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

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

我的原图在这里:

我的代码是:

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))

【问题讨论】:

  • 为什么不创建一个变量,即每天的平均价格并将其用作 x?
  • 好的,不知道如何在 R 中计算。如果我想找到价格变化的平均值,我必须添加类似'if Day = "Monday"'?
  • 您能否提供一个可重现的数据示例? stackoverflow.com/questions/5963269/…
  • @Carbo,如果您将 cmets 作为答案发布,也许它会更具可读性;)
  • @dc37 你是对的

标签: r ggplot2 heatmap


【解决方案1】:

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

由于你没有提供,我以 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 2022-08-18
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多