Я рисую диаграмму с несколькими группировками и обнаруживаю, что, хотя данные отображаются правильно, диаграмма полностью искажена на дисплее, поскольку значения галочки по оси Y не в численном порядке.r: ggplot2 гистограмма, отображающая отметки оси Y по порядку
Выходной ток график:
Ниже мой код, может кто-нибудь показать мне, как я могу заказать значения численно?
library(ggplot2)
veg_db <- read.csv("filepath\\filename.csv", header = TRUE)
veg_df <- data.frame(veg_db)
veg <- veg_df[c(125),c(4,5,9,12,13,18)]
white_veg <- data.frame(t(veg))
colnames(white_veg) <- c("value")
rownames(white_veg) <- c("Broccoli", "Carrots", "Leafy Greens", "Peas", "Peppers", "Tomatoes")
white_veg <- cbind(vegetables = rownames(white_veg),ethnicity = "white", white_veg)
veg <- veg_df[c(129),c(4,5,9,12,13,18)]
black_veg <- data.frame(t(veg))
colnames(black_veg) <- c("value")
rownames(black_veg) <- c("Broccoli", "Carrots", "Leafy Greens", "Peas", "Peppers", "Tomatoes")
black_veg <- cbind(vegetables = rownames(black_veg),ethnicity = "black", black_veg)
total_veg <- merge(white_veg, black_veg, all = TRUE)
total_veg
plot <- ggplot(total_veg, aes(vegetables, value, fill = ethnicity))+
geom_bar(position="dodge",stat="identity")
plot
Вот результат моего total_veg dataframe:
total_veg
vegetables ethnicity value
1 Broccoli white 10.18
2 Broccoli black 6.46
3 Carrots white 12.58
4 Carrots black 8.54
5 Leafy Greens white 2.88
6 Leafy Greens black 1.68
7 Peas white 19.96
8 Peas black 13.13
9 Peppers white 3.09
10 Peppers black 3.12
11 Tomatoes white 80.13
12 Tomatoes black 62.08
См. [Как создать воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Предпочитает 'dput()' ваших данных, чтобы мы могли видеть data.types. Кажется вероятным, что 'value' является фактором/символом, а не числовым значением в вашем data.frame. Вероятно, это из 'cbind()' создание матрицы, а не data.frame. Есть ли причина, по которой вы используете 'cbind()', а не 'data.frame()'? Или, по крайней мере, используйте 'cbind.data.frame()'. – MrFlick
Тогда, возможно, это происходит во время транспонирования 't()'. Это операция, предназначенная для матриц, а не для data.frames. Без исходного входного файла нелегко воспроизвести и диагностировать точную причину. – MrFlick
Я заменил функции cbind() для функций data.frame(), но не отрегулировал график вообще. Я запустил str (total_veg) и обнаружил, что действительно значение является фактором. Чтобы преобразовать его, я использовал as.numeric (as.character()) –