【发布时间】:2017-01-06 06:13:41
【问题描述】:
我想添加另一个图例,告诉我圆形热图的环代表什么(从外环到内环)。
我之前从另一个answer 尝试过以下操作:
library(reshape)
library(ggplot2)
library(plyr)
nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv")
nba$Name <- with(nba, reorder(Name, PTS))
nba.m <- melt(nba)
nba.m <- ddply(nba.m, .(variable), transform, value = scale(value))
# Convert the factor levels (variables) to numeric + quanity to determine size of hole.
nba.m$var2 = as.numeric(nba.m$variable) + 15
# Labels and breaks need to be added with scale_y_discrete.
y_labels = levels(nba.m$variable)
y_breaks = seq_along(y_labels) + 15
nba.labs <- subset(nba.m, variable==levels(nba.m$variable) [nlevels(nba.m$variable)])
nba.labs <- nba.labs[order(nba.labs$Name),]
nba.labs$ang <- seq(from=(360/nrow(nba.labs))/1.5, to=(1.5* (360/nrow(nba.labs)))-360, length.out=nrow(nba.labs))+80
nba.labs$hjust <- 0
nba.labs$hjust[which(nba.labs$ang < -90)] <- 1
nba.labs$ang[which(nba.labs$ang < -90)] <- (180+nba.labs$ang)[which(nba.labs$ang < -90)]
p2 = ggplot(nba.m, aes(x=Name, y=var2, fill=value)) +
geom_tile(colour="white") +
geom_text(data=nba.labs, aes(x=Name, y=var2+1.5,
label=Name, angle=ang, hjust=hjust), size=3) +
scale_fill_gradient(low = "white", high = "steelblue") +
ylim(c(0, max(nba.m$var2) + 1.5)) +
scale_y_discrete(breaks=y_breaks, labels=y_labels) +
coord_polar(theta="x") +
theme(panel.background=element_blank(),
axis.title=element_blank(),
panel.grid=element_blank(),
axis.text.x=element_blank(),
axis.ticks=element_blank(),
axis.text.y=element_text(size=5))
print(p2)
但是,我没有获得图例,而是收到以下错误消息:
“y”的比例已经存在。为“y”添加另一个比例,即 将替换现有比例。
有什么解决办法吗?
提前致谢!
【问题讨论】:
-
代码的哪一行添加了另一个图例?
-
我从这里得到这个代码:stackoverflow.com/questions/13887365/… 最初,我认为这个 scale_y_discrete(breaks=y_breaks, labels=y_labels) 将是另一个图例(左手角,灰色),但它确实不工作..
-
这似乎不是一个错误,它是一个警告(删除
scale_y_discrete(breaks=y_breaks, labels=y_labels) +以摆脱不必要的)。另外,应该注意您需要为ddply加载plyr。无论如何,您的解释“告诉我圆形热图的环代表什么的传说”对我来说不太有意义。也许那是我自己的无知,你有你要找的例子吗?戒指有编号吗?如果是这样,那需要额外的代码,而且它的问题与您所问的不同。 -
嗨@CyrusMohammadian,我已经删除了“ scale_y_discrete(breaks=y_breaks, labels=y_labels) +”并且出现了图例(但是,标签错误)。是的,我确实忘记添加加载 plyr 的代码。感谢您的提醒!一个例子是在这个网站上[链接]stackoverflow.com/questions/13887365/…。 “图例”在第一张图片的左手角。删除“scale_y_discrete(breaks=y_breaks, labels=y_labels) +”后我似乎无法获得正确的标签.. :)
-
@Miyii 你在找什么标签?
标签: r legend heatmap polar-coordinates