값의 히트 맵이 필요합니다. 히트 맵을 파란색에서 낮은 값 (샘플 코드에서는 0)으로, 녹색 값은 높은 값 (샘플 코드에서 75)으로 변경합니다. 그러나 데이터에는 75보다 큰 값이 포함되어 있습니다. 75보다 큰 값을 모두 빨간색으로 채우고 싶습니다.ggplot2 개별 캡이있는 채우기 그라디언트
요약하면 채우기를 0부터 75까지 파란색에서 녹색으로, 75보다 큰 모든 값을 빨간색으로 채우기를 원합니다. 제가 지금 일종의 코드를 사용하지만 빨강에서 빨강에 이르기까지 76-100의 값으로 여전히 녹색에서 빨간색으로 확장됩니다.
게시글 (Brian Diggs)의 답변 (ggplot2 heatmap with colors for ranged values)을 사용했지만 그 대답은 그라디언트 눈금의 값을 초과하는 모든 값을 채우는 것과 관련이 없습니다.
게시물 (ggplot geom_point() with colors based on specific, discrete values)은 geom_point와 매우 비슷한 질문에 답하는 것 같지만 geom_tile에 적용하는 데 문제가 있습니다.
아래 샘플 코드는 도움이되었습니다.
#Check packages to use in library
{
library('ggplot2')
library('scales')
}
#Data
horizontal_position <- c(-2, -1, 0, 1, 2)
vertical_position <- c(-2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2)
data_val <- sample(0:100, 25)
all_data <-data.frame(horizontal_position, vertical_position, data_val)
all_data %>%
ggplot(aes(horizontal_position, vertical_position)) +
geom_tile(aes(fill = data_val), colour = "transparent") +
geom_text(aes(label = data_val),colour="white")+
scale_fill_gradientn(colours = c("blue", "lightblue", "lightgreen", "green", "red"),
breaks=c(0,25,50,75,Inf),
guide = "colorbar")
그건, 내 유일한 코멘트는 특정 값의 그늘이 다른 값에 달려 있다는 것입니다. 즉,이 솔루션을 확장하여 0에서 100까지 25 개의 데이터 요소 집합을 각각 포함하는 두 개의 항목이있는 경우 값 43은 항목 1에 대해 43의 값이 항목 2에 대해 가질 수있는 색조가 다를 수 있습니다. 다른 24 개의 데이터 포인트는 무엇입니까? 이것은 데이터 값을 기반으로하지 않고 다른 데이터 포인트를 기준으로 위치를 조정하는 것입니다. 이 문제에 대한 또 다른 질문을하고 있습니다. – User247365
그 간단한 수정은'breaks = c (0,25,50,75, Inf)'다음에'limits = c (0,75)'를 추가하는 것입니다. 이는 동일한 색상 막대를 항상 반환하도록 크기를 제한합니다. 그러나 나는 당신의 관찰이 올바르지 않다고 생각합니다 : 43은 다른 값과 관계없이 항상 라이트 블루에서 라이트 그린으로 72 % 매핑됩니다. 유일한 차이점은 다른 값이 색상 막대에 표시되는지 여부입니다. – Brian
그것으로 놀고 난 후에, 당신은 당신의 관찰에서 옳았다. 그러나 'limits'는 당신이 원하는 수정이다. – Brian