Как создать диаграмму рассеяния базового R из подмножества данных

#r #plot #graph

#r #график #График

Вопрос:

Я использую базовую диаграмму R. Мне нужно подмножество для двух столбцов, в котором один, где gender = Женский, а другой, где Measure.Variables = Ожидаемая продолжительность жизни. Поскольку столбец Measure.Variables имеет два значения «Ожидаемая продолжительность жизни» и «Смертность».

Более того, я пытаюсь вручную установить разрывы и ограничения для осей y и x, но я не могу этого сделать. Я прикрепил картинку с разрывами и ограничениями, которые я хочу добавить.

изображение графика

Не могли бы вы также помочь мне с этим. Я хочу установить разрывы для оси y в breaks = c (30,40,50,60,70,80), а для оси x как breaks = c (1900,1920,1940,1960,1980,2000). Я хочу, чтобы эти ограничения отображались независимо от того, доступны ли данные.

Я использую следующий код, и он выдает ошибку, когда я добавляю второе условие в оператор subset. В противном случае он отлично работает без команды Measure.Variables==Ожидаемая продолжительность жизни.

Ниже приведен вывод данных

 structure(list(Measure.Variables = c("Life Expectancy", "Life Expectancy", 
"Life Expectancy", "Mortality", "Life Expectancy", "Life Expectancy"
), Race = c("All Races", "All Races", "All Races", "All Races", 
"All Races", "All Races"), Sex = c("Both Sexes", "Both Sexes", 
"Both Sexes", "Both Sexes", "Both Sexes", "Both Sexes"), Year = 1900:1905, 
    Average.Life.Expectancy = c(47.3, 49.1, 51.5, 50.5, 47.6, 
    48.7), Mortality = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_)), row.names = c(NA, 6L), class = "data.frame")
 

Я использую следующий код

 with(subset(LF, Sex == "Male", Measure.Variables == "Life Expectancy"), 
     plot(Year, Average.Life.Expectancy, col="red", pch=17,
          main="Male Life Expectancy", ylab="Life Expectancy"))
 

Отредактировано в ответ на Adele, значения y по-прежнему не отображаются. пожалуйста, посмотрите на этот графический график после предложения Адель

Комментарии:

1. Могу ли я порекомендовать вам рассмотреть руководство по стилю, например, jef.works/R-style-guide

2. @jay.sf спасибо!! Не могли бы вы также помочь с ручной настройкой разрывов в базовом графике R? У меня есть годы по оси x и ожидаемая продолжительность жизни по оси y, и ниже приведены разрывы, которые я пытаюсь создать разрывы для y xis = c (30,40,50,60,70,80) разрывы для x xis = c (1900,1920,1940,1960,1980,2000)

Ответ №1:

Будет неплохо добавить некоторые аргументы в ваш код, а затем использовать axis() :

 with(subset(LF, Sex == "Male", Measure.Variables == "Life Expectancy"), 
     plot(LF$Year, LF$Average.Life.Expectancy, col="red", pch=17,
          main="Male Life Expectancy", ylab="Life Expectancy"
          ,xlim = c(1900, 2000), ylim = c(30, 80)
          , xaxt='n', yaxt='n'
          )
     )

axis(1, at = seq(1900, 2000, by=20), las = 2)
axis(2, at = seq(30, 80, by=10))
 

Комментарии:

1. Он по-прежнему показывает только 3 значения для оси y, т.Е. 1900,1940,1980. Хотя разрывы работают нормально, маркировка не отображается для 1920,1960,2000.

2. я также добавил картинку для демонстрации, если она неясна

3. пожалуйста, добавьте las = 2 к первому axis , когда я отредактировал код

Ответ №2:

Проще data= просмотреть аргумент и разделить выделение с amp; помощью in subset . Для настройки оси отключите тексты оси с помощью xaxt='n' и yaxt='n' и создайте свой собственный с axis() помощью .

 plot(Year ~ Average.Life.Expectancy,
     data=subset(dat, Sex == "Both Sexes" amp; Measure.Variables == "Life Expectancy"),
     col="red", pch=17, 
     main="Male Life Expectancy", ylab="Life Expectancy", xaxt='n', yaxt='n')
axis(1, at=c(48,50,52))
axis(2, at=c(1900, 1902, 1904))
 

введите описание изображения здесь

Обратите внимание, что я использовал "Both Sexes" здесь, поскольку "Male" он не был включен в ваши примерные данные.

Кроме того, я использовал 40, 50, 52 и 1900, 1902, 1904 для демонстрации настроек оси.

В вашем случае я бы попробовал

 axis(1, at=3:8*10)
axis(2, at=seq(1900, 2000, 20))
 

Комментарии:

1. Спасибо!! Не могли бы вы также помочь с ручной настройкой разрывов в базовом графике R? У меня есть годы по оси x и ожидаемая продолжительность жизни по оси y, и ниже приведены разрывы, которые я пытаюсь создать разрывы для y xis = c (30,40,50,60,70,80) разрывы для x xis = c (1900,1920,1940,1960,1980,2000)

2. См. Обновление @MadiaKh

3. Это выдает мне ошибку «Ошибка в plot.window (…): недопустимое значение ‘xlim'» Graph1 <- с (подмножество (LF, Пол ==»Мужчина» и мера.Переменные == «Ожидаемая продолжительность жизни» и раса ==»Все расы»), график (год,Средняя продолжительность жизни,col = «красный», pch = 17, main=»Ожидаемая продолжительность жизни мужчин»,ylab =»Ожидаемая продолжительность жизни»,ось(1, at = c(30,40,50,60,70,80)), ось(2, at = c(1900,1920,1940,1960,1980,2000)) ))

4. @MadiaKh Вы, кажется, как xlim= -то неправильно определили. xlim=c(x1, x2) должен быть вектор с двумя элементами, попробуйте, например xlim=c(1900, 2000) .

5. У меня это не работает. Есть ли какой-либо другой способ, где я мог бы просто установить значения оси вручную? Кроме того, почему в вашем случае не отображается последнее значение на оси, например «52»?