2016-01-21 9 views
2

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

year color toyota honda ford 
2011 blue 66  75  13 
2011 red  75  91  62 
2011 green 65  26  57 
2012 blue 64  23  10 
2012 red  84  8  62 
2012 green 67  21  62 
2013 blue 31  74  49 
2013 red  48  43  35 
2013 green 57  62  74 
2014 blue 59  100  32 
2014 red  72  47  67 
2014 green 97  24  70 
2015 blue 31  0  79 
2015 red  60  35  74 
2015 green 51  2  28 

(Мои фактические данные, представленные в изображениях диаграммы ниже, гораздо больше и имеет 100s из «цвета», но я упрощаю здесь, так что вы можете просто понять структуру.)

Я пытаюсь создать диаграмму с разбивкой по площади, которая показывает, сколько автомобилей каждого цвета производится со временем для конкретной компании. (т. е. каждая компания имеет свою собственную диаграмму, в которой ось x = лет, ось y = автомобили).

я запускаю этот код:

qplot(year, toyota, data = dataName, fill = color, group = color, geom= "area", position = "stack") 
+ geom_area() + theme(legend.position = "none") 

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

company1_chart

company2_chart

Я запутался, почему это происходит, или даже возможно (особенно отверстия ... данные не будут складываться вниз?) Будет ли это поможет, если я сделал давно компании а не шире в структуре данных?

+1

Вы проверили, имеются ли у ваших данных пробелы в течение определенных лет и цветов? Например. нет синего цвета для 1983 года? – user3293236

+0

Мои данные имеют много пробелов. Это будет проблемой? Если это так, я могу убедиться, что есть строки для одного и того же набора из 200 цветов для каждого года. – Jim

+0

Не совсем уверен, но я бы догадался, что пустые пространства происходят там, где нет никакой ценности ... Что должен делать ggplot2 или показывать, если нет никакой ценности? – user3293236

ответ

0

Даже с 0 значениями вы не должны иметь этих ошибок. Я взял ваши данные и добавил 0 в столбце honda спорадически.

Код (используя ggplot2)

library(ggplot2) 
df <- read.csv("cartest.csv", header = TRUE) 

ggplot(data=df,aes(x=year,y=h,fill=color)) + 
    geom_area() + 
    ggtitle("car test") 

cartest.png

Если импортировать данные в виде CSV или TSV и столбцы данных числовые вы не должны иметь эту проблему. Если он был импортирован как .character, вы можете конвертировать, используя:

df$h <- as.numeric(df$h) 
+0

Хмм, поэтому моя переменная «toyota» является числовой, переменная «год» является целой, а переменная «color» является фактором. Я ввел код ggplot точно так же, как вы его ввели (заменив фактические переменные, которые у меня есть в моем наборе данных), но по-прежнему получал по существу такие же нечетные заполненные дыркой и случайные строки в верхней диаграмме, как и в qplot в моем первоначальный пост. – Jim

+0

@ Jim, как уже было подтверждено аосмитом, проблема заключается в том, что у вашего блока данных есть пробелы, то есть значения «NA» после внутреннего преобразования данных. Вероятно, вы можете изменить это, используя 'na.опустить в свой код. Попробуйте этот фрагмент: ggplot (данные = na.omit (DF), AES (х = год, Y = H, заполнить = цвет)) + geom_area() + ggtitle ("тестовый автомобиль") Не полностью уверен, что если это сработает, но дайте ему вращаться ... – user3293236