#r
#r
Вопрос:
Я хочу создать простую столбчатую диаграмму из списка случайных чисел (1-10) со следующим кодом
Random.Integer.Data = table(Problem.2.Data$Random.Integer)
barplot(Random.Integer.Data, col = "Orange", main = "Random Integer", xlab = "Number Choice", ylab = "Frequency")
Когда я использую этот код, он создает гистограмму с номером 1 6 9 по оси x. Для меня также создается только 8 столбцов, что означает, что он странно связывает случайные целые числа. Я хотел бы, чтобы это была одна строка для каждого числа от 1 до 10, и я хотел бы, чтобы ось x также показывала это.
Может ли кто-нибудь помочь мне с кодом, который мне нужен для того, чтобы сделать это?
Комментарии:
1. Пожалуйста, сделайте свой вопрос воспроизводимым: добавьте
Problem.2.Data$Random.Integer
к вопросу. Используйтеdput(Problem.2.Data$Random.Integer)
или dput(head(Проблема. 2. Данные$Случайные. Целое число, n)) где n — некоторое целое число, достаточно большое, чтобы сделать вопрос осмысленным.
Ответ №1:
Я не думаю, что в вашем коде что-то не так. Что-то не так с вашими предположениями о ваших данных.
Давайте попробуем воссоздать фрейм данных с тем же именем и заголовком столбца, и мы наполним его 100 случайными целыми числами от 1 до 10:
set.seed(69)
Problem.2.Data <- data.frame(Random.Integer = sample(10, 100, TRUE))
head(Problem.2.Data)
#> Random.Integer
#> 1 1
#> 2 2
#> 3 8
#> 4 7
#> 5 7
#> 6 6
Теперь мы будем использовать ваш точный код и убедимся, что он работает так, как ожидалось:
Random.Integer.Data = table(Problem.2.Data$Random.Integer)
barplot(Random.Integer.Data,
col = "Orange",
main = "Random Integer",
xlab = "Number Choice",
ylab = "Frequency")
Однако давайте попробуем это снова с меньшим размером выборки, всего 20 строк:
Problem.2.Data <- data.frame(Random.Integer = sample(10, 20, TRUE))
head(Problem.2.Data)
#> Random.Integer
#> 1 8
#> 2 5
#> 3 6
#> 4 8
#> 5 4
#> 6 6
Random.Integer.Data = table(Problem.2.Data$Random.Integer)
barplot(Random.Integer.Data,
col = "Orange",
main = "Random Integer",
xlab = "Number Choice",
ylab = "Frequency")
Теперь мы видим, что всего 7 ячеек. Почему? Потому что, если мы посмотрим на нашу таблицу, в наших данных всего 7 уникальных целых чисел:
Random.Integer.Data
#>
#> 3 4 5 6 8 9 10
#> 1 1 5 5 5 1 2
Мы можем исправить это, сделав наш столбец коэффициентом с 10 уровнями:
Random.Integer.Data = table(factor(Problem.2.Data$Random.Integer, 1:10))
barplot(Random.Integer.Data,
col = "Orange",
main = "Random Integer",
xlab = "Number Choice",
ylab = "Frequency")
Также обратите внимание, что если я уменьшу окно, некоторые метки оси x исчезнут, чтобы предотвратить перекрытия:
Создано 2020-08-16 пакетом reprex (версия 0.3.0)
Комментарии:
1. Спасибо за вашу помощь! Это дало мне 10 столбиков, как я и хотел, однако по-прежнему только обозначение оси x как 1 5 9. Есть ли настройка, позволяющая отображать на графиках каждый отдельный выбор номера?
2. @Jordan вы пробовали просто перетащить окно графика, чтобы сделать его больше? Все метки должны отображаться по умолчанию, но если площадь графика слишком мала по сравнению с размером текста, некоторые цифры будут подавлены, чтобы предотвратить перекрытия.
3. Да, это исправлено. Извините, что я совсем новичок в программном обеспечении, поэтому все еще знакомлюсь с мелочами!
Ответ №2:
Если вам нужно 10 ячеек и вы хотите использовать что-то другое, то ggplot2 может дать вам тот же результат. Как упоминалось выше, вам также нужен этот столбец с 10 коэффициентами.
#install.packages("ggplot2")
library(ggplot2)
df<-data.frame(x=seq(1:10),
y=sample(10,10,TRUE)) #your data
ggplot(df,aes(x=factor(x),y=y))
geom_col(fill="Orange")
labs(title = "Random Integer", x = "Number Choice", y = "Frequency")