2016-02-02 1 views
-1

У меня возникли проблемы с созданием графика точек/гистограммы этого набора данных. Мой набор данных выглядит как this. Мне нужен вывод, который выглядит как this. Однако geom_bar() через ggplot будет давать мне только подсчеты и не будет принимать отдельные десятичные значения из таблицы. Я тоже пытался использовать Plotly, но, похоже, он не очень хорошо подходит для сюжетов с несколькими игроками.Графический многострочный штрих-код с R

Я уже установил более крупный фрейм данных с 200 + переменными. Я пытаюсь сделать что-то, что может найти конкретных игроков в этом фрейме данных, а затем создать график из него. Следовательно, я идеально ищу что-то, что может легко обрабатывать 5-10 разных серий.

Любая помощь была бы принята с благодарностью.

Спасибо!

ответ

0

Это довольно просто, ключ состоит в том, чтобы получить данные из его текущего широкоформатного формата в длинный формат, который более полезен для построения графика в R. И используйте geom_point, а не geom_bar.

Во-первых, некоторые воспроизводимый пример данных (которые вы должны использовать снова в вашем вопросе, если вы разместите другой вопрос здесь, делает его гораздо проще для других, чтобы помочь вам):

library(ggplot2) 
library(reshape2) 

dataset <- data.frame(
    PlayerName = letters[1:6], 
    IsolationPossG = runif(6), 
    HandoffPossG = runif(6), 
    OffScreenPossG = runif(6) 
) 

Это текущие данные, в широком формате:

dataset 
    PlayerName IsolationPossG HandoffPossG OffScreenPossG 
1   a  0.78184751 0.939183520  0.74461784 
2   b  0.06557433 0.745699149  0.96540299 
3   c  0.21105745 0.753534811  0.02977973 
4   d  0.41271918 0.555475622  0.18317886 
5   e  0.38153149 0.246292074  0.74862310 
6   f  0.89946318 0.008412111  0.53195933 

Теперь мы преобразуем в длинном формате:

molten <- melt(
    dataset, 
    id.vars = "PlayerName", 
    measure.vars = c("IsolationPossG", "HandoffPossG", "OffScreenPossG") 
) 

Вот длинный формат, гораздо полезнее для построения в R:

head(molten) 
    PlayerName  variable  value 
1   a IsolationPossG 0.78184751 
2   b IsolationPossG 0.06557433 
3   c IsolationPossG 0.21105745 
4   d IsolationPossG 0.41271918 
5   e IsolationPossG 0.38153149 
6   f IsolationPossG 0.89946318 

Вот как сюжет его:

ggplot(molten, aes(x = variable, y = value, colour = PlayerName)) + 
    geom_point(size = 4) + 
    theme_bw() + 
    theme(legend.position="bottom",legend.direction="horizontal") 

Что дает:

enter image description here

ч/т how to have multple labels in ggplot2 for bubble plot

Если вы хотите, чтобы форма da та точка зависит от имени, как ваш пример изображения показывает (но это кажется довольно чрезмерным, чтобы иметь переменное имя игрока на два эстетике сюжета в):

ggplot(molten, aes(x = variable, y = value, shape = PlayerName, colour = PlayerName)) + 
    geom_point(size = 4) + 
    theme_bw() + 
    theme(legend.position="bottom",legend.direction="horizontal") 

enter image description here

+0

спасибо это прекрасно! Идея превратить каждую строку в уникальную ценность перешла мне на ум, но я не понимал, как легко было бы с чем-то вроде расплава(). Также, как вы форматировали свои фреймы данных при комментировании StackoverFlow? Я попытался использовать Markdown, но это не сработало. – sdr1975

+0

Добро пожаловать, конверсия с широким диапазоном является фундаментальной частью подготовки множества наборов данных для анализа и построения графиков, поэтому это полезное умение знать. Чтобы отформатировать кадры данных в моем ответе, я выбрал текст и воспользовался кнопкой форматирования кода, см. Здесь для получения более подробной информации: http://meta.stackexchange.com/a/22189/181565 – Ben

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