使用R或Python在螺旋中可视化时间序列?

7

在ggplot中,使用coord_polar - Gregor Thomas
我不确定如何做到这一点,你确定这个面板结构可以实现吗? - wolfsatthedoor
2个回答

10

这看起来相当接近:

# sample data - hourly for 10 days; daylight from roughly 6:00am to 6:00pm
set.seed(1)     # for reproducibility
Day  <- c(rep(1:10,each=24))
Hour <- rep(1:24)
data <- data.frame(Day,Hour)
data$Sunlight <- with(data,-10*cos(2*pi*(Hour-1+abs(rnorm(240)))/24))
data$Sunlight[data$Sunlight<0] <- 0

library(ggplot2)
ggplot(data,aes(x=Hour,y=10+24*Day+Hour-1))+
  geom_tile(aes(color=Sunlight),size=2)+
  scale_color_gradient(low="black",high="yellow")+
  ylim(0,250)+ labs(y="",x="")+
  coord_polar(theta="x")+
  theme(panel.background=element_rect(fill="black"),panel.grid=element_blank(),
        axis.text.y=element_blank(), axis.text.x=element_text(color="white"),
        axis.ticks.y=element_blank())

1
哇...非常好。谢谢分享这个想法。 - jazzurro

7
我知道如何在Python中做到这一点。我发现Matplotlib中的散点图非常适合这种情况。以下是一个例子:
import matplotlib.pyplot as plt
import numpy as np

period = 0.5

f = np.arange(0, 100, 0.03) // Data range
z = np.sin(f)               // Data

a = f*np.sin(period*f);
b = f*np.cos(period*f);

fig = plt.figure()
ax = plt.subplot(111)
fig.add_subplot(ax)
ax.scatter(a, b, c=z, s=100, edgecolors='none')

plt.show()

您可以更改period来改变螺旋线中的旋转次数。ab绘制了螺旋线,而z包含实际数据(在此示例中为正弦波)。

Example


那么在你的例子中,每个螺旋代表不同的一天? - wolfsatthedoor
我特意选择了一个与我的虚拟数据正弦波周期同步的时间段。对于真实数据,您可以选择最适合您需求的周期。您可以选择每天1个周期,或者选择一个导致最佳数据对齐的周期(与我所做的相同),这可以用于发现数据的周期性。 - Tim B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接