Как частично раскрасить гистограмму? - PullRequest
1 голос
/ 01 мая 2020

Я пытался закрасить указанные c ячейки выше определенного порога в следующем кадре данных (df)

df <- read.table("https://pastebin.com/raw/3En2GWG6", header=T)

Я следовал этому примеру ( Изменить цвет указать c бункеров гистограмм в R ), , но я не могу получить это, чтобы адаптировать их предложения к моим данным , поэтому я хотел бы спросить вас здесь на stackoverflow

I хотел бы, чтобы все ячейки со значениями выше 0,100 были «красными», а все остальные были либо без цвета, либо просто черными (я определил черный, но я бы предпочел не иметь цвета)

Вот что я пытался :

col<-(df$consumption>=0.100)
table(col) # I can see 40 points above 100, the rest below

col[which(col=="TRUE")] <- "firebrick1"
col[which(col=="FALSE")] <- "black"

hist(df$consumption, breaks = 1000, xlim = c(0,0.2), col=col,xlab= "Consumption [MG]")

Однако, весь график красный, и это не имеет смысла ..?

Другими словами, я хотел бы что-нибудь справа от строки ниже, чтобы быть красным

hist(df$consumption, breaks = 1000, xlim = c(0,0.2),xlab= "Consumption [MG]")
abline(v=c(.100), col=c("red"),lty=c(1), lwd=c(5))

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Вот то, что вы делали. Вы не хотите подсчитывать количество точек выше своего среза, а скорее количество бинов гистограммы выше своего среза.

# store the histogram as an object
h <- hist(df$consumption, breaks = 1000)

# extract out the breaks, and assign a color vector accordingly
cols <- ifelse(h$breaks > 0.1, "firebrick1", "black")

# use the color vector
plot(h, col = cols, xlim=c(0,.2),xlab= "Consumption [MG]")
abline(v=c(.100), col=c("red"),lty=c(1), lwd=c(5))

enter image description here

1 голос
/ 01 мая 2020

Просто нанесите две гистограммы друг на друга, используя add=TRUE и поднастроив вторую.

hist(df$consumption, breaks=1000, xlim=c(0,.2),xlab= "Consumption [MG]")
hist(df$consumption[df$consumption > .100], breaks=1000, xlim=c(0,.2), col=2, add=TRUE)

abline(v=.100, col=2, lty=3)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...