我正在尝试创建热图,但对于如何进行设置感到困惑。这是数据帧。
Ticker <- c("S&P 500","Dow Jones Index","AAPL","MSFT","FB","NFLX","GOOG","JPM","TSLA")
Values <- c(2, 1, 1, 1, 1, 1, 1, -1, -1)
ticker_matrix <- matrix(Ticker , nrow = 3, ncol = 3)
values_matrix <- matrix(Values, nrow = 3, ncol = 3)
我应该如何使用ggplot2绘制看起来像这样的热图?
矩阵图是一个3x3矩阵,其中正数为绿色(数字越大,绿色越深),而负数则呈红色,效果会更好。
编辑:
感谢卡米尔(Camille)强调问题的广泛性,我将参考d.b的答案进一步缩小问题的范围。
d.b的答案是我所寻求的确切方向。从而根据背景中潜在价值的比例将热图显示在3x3矩阵中。 (此可视化的目的是显示特定股票的情绪是正面还是负面)
基于d.b的答案(值以离散因子上色),我将发布一个具有连续变量的替代解决方案。谢谢大家!
答案 0 :(得分:3)
d = data.frame(Ticker = as.vector(ticker_matrix),
Values = as.vector(values_matrix),
X = as.vector(row(ticker_matrix)),
Y = as.vector(col(ticker_matrix)))
ggplot(data = d,
mapping = aes(x = factor(X),
y = factor(Y),
fill = factor(Values),
label = Ticker)) +
geom_tile(color = "white") +
geom_text() +
coord_equal()
如果要删除轴和图例,请查看答案here。
答案 1 :(得分:1)
d.b答案的连续变量版本(范围为c(-1,2))
d = data.frame(Ticker = as.vector(ticker_matrix),
Values = as.numeric(values_matrix),
X = as.vector(row(ticker_matrix)),
Y = as.vector(col(ticker_matrix)))
ggplot(data = d,
mapping = aes(x = factor(X),
y = factor(Y),
fill = Values,
label = Ticker)) +
geom_tile() +
geom_text() +
coord_equal() +
scale_fill_gradientn(colors = c("dark red", "red3", "white", "green3", "dark green"),
limits=c(-1, 2))