2016-05-25 8 views
1

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

Taxation=c("Partially", "Fully", "Partially","Exempt","Partially","Exempt", "Partially", "Partially", "Fully", "Fully", "Fully", "Exempt", "Exempt", "Fully", "Exempt", "Exempt","Exempt") 
Orientation=c("Non-Profit", "Non-Profit/Sustainable", "Non-Profit", "Non-Profit", "For-Profit", "Non-Profit/Sustainable", "Non-Profit", "Non-Profit/Sustainable", "Non-Profit", "Non-Profit", "Non-Profit/Sustainable", "Non-Profit", "Non-Profit", "Non-Profit/Sustainable", "Non-Profit/Sustainable", "Non-Profit", "Non-Profit/Sustainable") 
Country=c("Austria","France", "Spain", "Ireland", "Greece", "Finland", "Belgium", "Austria", "Belgium", "Slovenia", "Italy", "France", "Belgium", "Portugal", "Netherlands" ,"Denmark",  "Germany") 
Institute=c("Inst1", "Inst2", "Inst3", "Inst4", "Inst5", "Inst6", "Inst7", "Inst8", "Inst9", "Inst10", "Inst11", "Inst12", "Inst13", "Inst14", "Inst15", "Inst16", "Inst17") 
Count=rep(1,times=17) 
df<-data.frame(Taxation=Taxation, Orientation=Orientation, Country=Country, Institute=Institute,Count=Count) 

С этого dataframe я сделать следующий расчет:

with(df, table(Taxation, Orientation)) 

Taxation For-Profit Non-Profit Non-Profit/Sustainable 
    Exempt    0   4      3 
    Fully    0   2      3 
    Partially   1   3      1 

Мой Прицел сделать двухсторонний график рассеяния категориальных переменных Taxation и Orientation, где он покажет количество каждой возможности с помощью пулей, и каждая пуля будет иметь в качестве метки страну происхождения каждого учреждения. Это помогает, я хочу, чтобы воспроизвести диаграмму, как это:

enter image description here

Обратите внимание, что этот график он хорошо показывает, с большим «полем» количеством случаев, которые возникают из разных combinaton.

ответ

1

Вот идея, однако нет никаких точек, поскольку я не мог понять способ смещения точек и текста вместе. Использование пакета ggrepel вы можете создать неперекрывающиеся текстовые метки, вертикальные и горизонтальные линии разделить участок на 9 коробка:

library(ggrepel) 

    ggplot(df, aes(x = Taxation, y = Orientation, label = Country)) + 
    geom_text_repel(size = 4, segment.color = NA) + 
    theme(panel.grid.major = element_blank(), 
     axis.text.y = element_text(angle = 90, hjust = .5)) + 
    geom_vline(xintercept = c(1.5, 2.5)) + 
    geom_hline(yintercept = c(1.5, 2.5)) + 
    coord_equal() 

enter image description here

+0

пожалуйста, вы можете также показать, как я могу изменить позиционирование значений у осевые метки? То есть, «Некоммерческие», «Коммерческие» и т. Д. Выглядят вертикальными, а не горизонтальными. Я попробовал axis.text.y = ... но не работал. – msh855

+0

Спасибо, глупо, что я не упомянул об этом раньше, но могу ли я спросить вас, как я могу теперь увеличить расстояние между значениями и метками на каждой оси. Как, вы можете видеть, что ось x x, Taxation, довольно близка к метке «Полностью». Аналогично, для оси y. Я пробовал себя, но это не сработало. Это также поможет, если есть шанс показать мне, как я могу заставить вертикальные и горизонтальные линии выглядеть пунктирными. – msh855

+0

@ msh855 все эти дополнительные вопросы были заданы и отвечали на SO или в других местах раньше, пожалуйста, выполните некоторые поиски. Если все предлагаемые решения не сработают для вас, я думаю, что можно задать новый вопрос. См. [Здесь] (http://stackoverflow.com/questions/14487188/increase-distance-between-text-and-title-on-the-y-axis). Для общего введения (например, как изменить типы линий и, возможно, более подробную информацию о том, как работает ggplot2), посмотрите на очень хорошую [документацию ggplot2] (http://docs.ggplot2.org/current/) – beetroot

Смежные вопросы