알파벳 순서 대신 ggplot2 x 축을 구체적으로 어떻게 주문합니까?
제가 만들려는 거예요.heatmap
사용.ggplot2
사용geom_tiles
함수는 아래의 내 코드입니다.
p<-ggplot(data,aes(Treatment,organisms))+geom_tile(aes(fill=S))+
scale_fill_gradient(low = "black",high = "red") +
scale_x_discrete(expand = c(0, 0)) +
scale_y_discrete(expand = c(0, 0)) +
theme(legend.position = "right",
axis.ticks = element_blank(),
axis.text.x = element_text(size = base_size, angle = 90, hjust = 0, colour = "black"),
axis.text.y = element_text(size = base_size, hjust = 1, colour = "black")).
data는 나의 data.csv 파일입니다.
내 X축은 치료 유형입니다.
나의 Y축은 유기체의 종류입니다.
저는 명령어와 프로그래밍에 익숙하지 않고 비교적 생소합니다.나는 단지 x축에 있는 라벨의 순서를 지정할 수 있기를 원합니다.이 경우 "치료"의 순서를 지정하려고 합니다.기본적으로 알파벳 순으로 정렬됩니다.이를 재정의하려면 어떻게 해야 합니까?/데이터를 원래 csv 파일과 동일한 순서로 유지합니까?
이 명령어를 사용해 보았습니다.
scale_x_discrete(limits=c("Y","X","Z"))
여기서 x, y 및 z는 나의 치료 조건 순서입니다.하지만 그것은 잘 작동하지 않고, 히트 박스가 없어졌습니다.
완전하고 재현 가능한 예가 없이는 특정 질문에 답하기가 조금 어렵습니다.그러나 다음과 같은 방법으로 작동해야 합니다.
#Turn your 'treatment' column into a character vector
data$Treatment <- as.character(data$Treatment)
#Then turn it back into a factor with the levels in the correct order
data$Treatment <- factor(data$Treatment, levels=unique(data$Treatment))
이 예제에서 요인의 순서는 다음과 같습니다.data.csv
파일.
다른 주문을 원하는 경우 수동으로 주문할 수 있습니다.
data$Treatment <- factor(data$Treatment, levels=c("Y", "X", "Z"))
하지만 만약 여러분이 많은 수준을 가지고 있다면 이것은 위험합니다: 만약 여러분이 그것들 중 하나라도 틀리면, 그것은 문제를 일으킬 것입니다.
또한 단순히 내부에서 인수 분해할 수 있습니다.aes()
직통 전화를 걸다나는 왜 한계를 설정하는 것이 당신에게 효과가 없는지 확신할 수 없습니다. 나는 당신이 레벨 벡터에 오타가 있을 수 있기 때문에 NA를 받는다고 생각합니다.
아래 내용은 사용자 Drew Steen의 답변과 크게 다르지 않지만, 원본 데이터 프레임을 변경하지 않는 것이 중요한 차이점입니다.
library(ggplot2)
## this vector might be useful for other plots/analyses
level_order <- c('virginica', 'versicolor', 'setosa')
p <- ggplot(iris)
p + geom_bar(aes(x = factor(Species, level = level_order)))
## or directly in the aes() call without a pre-created vector:
p + geom_bar(aes(x = factor(Species, level = c('virginica', 'versicolor', 'setosa'))))
## plot identical to the above - not shown
## or use your vector as limits in scale_x_discrete
p + geom_bar(aes(x = Species)) +
scale_x_discrete(limits = level_order)
repref v2.0.2를 사용하여 2022-11-20에 생성됨
언급URL : https://stackoverflow.com/questions/12774210/how-do-you-specifically-order-ggplot2-x-axis-instead-of-alphabetical-order
'programing' 카테고리의 다른 글
Android 앱이 멀티태스킹 트레이에서 중지될 때 Firebase 알림을 수신하지 않음 (0) | 2023.06.04 |
---|---|
node.js에서 mongodb에 연결할 때 ECONN 거부 오류가 발생했습니다. (0) | 2023.06.04 |
루비에서 객체에 대한 모든 메소드를 나열하는 방법은 무엇입니까? (0) | 2023.06.04 |
도커선.도커 예외:서버 API 버전을 가져오는 중 오류 발생 (0) | 2023.06.04 |
팬더를 사용하여 날짜 및 시간 열 결합 (0) | 2023.06.04 |