Eu tenho o seguinte conjunto de dados: https://dl.dropbox.com/u/22681355/ORACLE.csv e gostaria de plotar as alterações diárias em 'Abrir' por 'Data', então fiz o seguinte:
oracle <- read.csv(file="http://dl.dropbox.com/u/22681355/ORACLE.csv", header=TRUE)
plot(oracle$Date, oracle$Open, type="l")
e recebo o seguinte:
Agora, obviamente, este não é o melhor enredo de todos os tempos, então estou me perguntando qual é o método certo a ser usado ao plotar dados tão detalhados?
r
data-visualization
dbr
fonte
fonte
R
uma maneira de adicionar linhas suaves éloess
. Estou saindo, mas tente sair do R e, se tiver problemas, edite sua postagem e alguém certamente poderá ajudá-lo. Também existem outros métodos de suavização, mas acho que loess é um bom padrão.Respostas:
O problema com seus dados não é que eles sejam extremamente detalhados: você não tem valores nos finais de semana, é por isso que é plotado com lacunas. Existem duas maneiras de lidar com isso:
smooth.spline
,loess
, etc.). O código de interpolação simples está abaixo. Mas, neste caso, você apresentará algo "não natural" e artificial aos dados. Por isso prefiro a segunda opção.Espero que ajude.
fonte
plot(as.Date(oracle$Date), oracle$Open, type='l')
openValues <- c(openValues, mean(oracle$Open[i:i-1]))
no primeiro método comopenValues <- c(openValues, NA)
Como o problema é comum a muitos ambientes de software estatístico, vamos discuti-lo aqui em Validação cruzada, em vez de migrá-lo para um fórum específico de R (como StackOverflow).
A questão real é que isso
Date
é tratado como um fator - uma variável discreta - e, portanto, as linhas não estão sendo conectadas corretamente. (Os pontos também não são plotados perfeitamente com precisão na direção horizontal.)Para fazer o gráfico à direita, o
Date
campo foi convertido de um fator para uma data real, cada semana foi identificada com um cálculo simples (quebrando as semanas entre sábado e domingo) e as linhas foram interrompidas nos finais de semana, fazendo um loop ao longo das semanas:(Uma data equivalente a cada semana, fornecendo a segunda-feira dessa semana, também foi armazenada no
oracle
dataframe porque pode ser útil para plotar dados agregados semanais.)A intenção original pode ser alcançada simplesmente emulando a última linha para exibir todos os dados. Para adicionar algumas informações sobre o comportamento sazonal, a seguinte plotagem varia de cor por semana ao longo de cada ano civil:
fonte
Eu não interpolava nos fins de semana. Poucas bolsas são negociadas no sábado e nenhuma que eu saiba no domingo. Você está introduzindo uma estimativa para os dados que nunca existiram. Por que não remover sábado e domingo do conjunto de dados? Eu faria algo como o abaixo:
fonte
Em relação à aparência do seu gráfico, suponho que a adição de vários rótulos no eixo x o melhoraria visualmente. A aparência do gráfico sugerido você pode ver aqui http://imgur.com/ZTNPniA
Eu não sei como fazer esse enredo, é apenas uma ideia (que eu não vi realizada em R)
fonte