Étant donné que le problème est commun à de nombreux environnements logiciels statistiques, discutons-en ici sur Cross Validated plutôt que de le migrer vers un forum spécifique à R (tel que StackOverflow).
Le vrai problème est qu'il Date
est traité comme un facteur - une variable discrète - et que les lignes ne sont donc pas connectées correctement. (Les points ne sont pas non plus tracés parfaitement avec précision dans le sens horizontal.)
Pour faire le tracé de droite, le Date
champ a été converti d'un facteur en une date réelle, chaque semaine a été identifiée avec un calcul simple (en répartissant les semaines entre le samedi et le dimanche) et les lignes ont été interrompues le week-end en bouclant au fil des semaines:
oracle$date <- as.Date(oracle$Date)
oracle$week.num <- (as.integer(oracle$date) + 3) %/% 7
oracle$week <- as.Date(oracle$week.num * 7 - 3, as.Date("1970-01-01", "%Y-%m-%d"))
par(mfrow=c(1,2))
plot(as.factor(unclass(oracle$Date[1:120])), oracle$Open[1:120], type="l",
main="Original Plot: Inset", xlab="Factor code")
plot(oracle$date[1:120], oracle$Open[1:120], type="n", ylab="Price",
main="Oracle Opening Prices")
tmp <- by(oracle[1:120,], oracle$week[1:120], function(x) lines(x$date, x$Open, lwd=2))
(Une date équivalente à chaque semaine, donnant le lundi de cette semaine, a également été stockée dans la oracle
trame de données car elle peut être utile pour tracer des données agrégées hebdomadaires.)
L'intention initiale peut être réalisée simplement en émulant la dernière ligne pour afficher toutes les données. Pour ajouter des informations sur le comportement saisonnier, le graphique suivant fait varier la couleur par semaine tout au long de chaque année civile:
par(mfrow=c(1,1))
colors <- terrain.colors(52)
plot(oracle$date, oracle$Open, type="n", main="Oracle Opening Prices")
tmp <- by(oracle, oracle$week,
function(x) lines(x$date, x$Open, col=colors[x$week.num %% 52 + 1]))