Изменить цвета меток оси X в точечном графике из пакета решетки R - PullRequest
1 голос
/ 24 марта 2020

Мне было интересно, есть ли способ изменить цвет некоторых меток оси х на точечной диаграмме, который я создал с помощью пакета решетки в R.

Это пример моих данных / кода:

State <- factor(c("AZ", "AR", "NJ"))
Value <- c(1.2, 4.5, 2.0, 1.5, 4.0, 1.4)
Year <- c(2000, 2000, 2000, 2005, 2005, 2005)

p <- dotplot(Value ~ State, groups = Year, main = "Test Data",
        xlab = "State/Territory", ylab = "Data", auto.key = TRUE)

Я бы хотел, чтобы AZ и AR были сгруппированы (быть одинаковым цветом текста на оси x, мы можем сделать его синим)

Я бы хотел, чтобы NJ был его собственная группа (другой цвет в тексте оси x, мы можем сделать его розовым)

Могу ли я также нарисовать вертикальную линию на графике, чтобы лучше разделить группы?

Спасибо за вашу помощь!

Ответы [ 3 ]

2 голосов
/ 25 марта 2020

Ну, просто для забавы, иногда решетка не так уж сложна, и она все еще замечательно быстро делает большие массивы.

В вашем случае вам нужно указать группу State, а затем использовать col, чтобы указать 3 цвета, и сделайте panel.abline внутри функции панели, например:

dotplot(Value ~ State, groups=State,
main = "Test Data",
col=c("blue","blue","brown"),
panel = function(x, y,...) {
         panel.dotplot(x, y,levels.fos = unique(x),...)
         panel.abline(v=2.5)
       })

enter image description here

Конечно, одним недостатком является то, что вы не можете легко указать другую групповую переменную, например, год здесь.

1 голос
/ 24 марта 2020

Управление этим в традиционных системах построения графиков чрезвычайно сложно, как можно увидеть здесь . Одним из подходов может быть использование современной системы печати, такой как ggplot2.

library(ggplot2)
data <- data.frame(State = factor(c("AZ", "AR", "NJ")),Value = c(1.2, 4.5, 2.0, 1.5, 4.0, 1.4), Year = c(2000, 2000, 2000, 2005, 2005, 2005))

ggplot(data,aes(x=State,y=Value,color = State, shape = as.factor(Year))) + 
  geom_point(size = 3) + scale_color_manual(values=c("blue","blue","pink")) + scale_shape_discrete(name = "Year") +
  theme(axis.text.x = element_text(colour = c("blue","blue","pink")), plot.title = element_text(hjust = 0.5)) +
  geom_vline(xintercept = 2.5) + labs(title = "Test Data", x = "State/Territory", y = "Data") 

Plot

0 голосов
/ 18 апреля 2020
# This could be a solution with lattice

dotplot(Value ~ State, data, groups = State,
        scales = list(x = list(col = ifelse(levels(data$State) %in% c("AZ", "AR"), "blue", "deeppink2"))),
        par.settings = list(superpose.symbol = list(col = c("blue", "blue", "deeppink2"), pch = 16)),
        panel = function(...) {
          panel.abline(v = 2.5)
          panel.dotplot(...)
        })

...