密谋不创建线性趋势线
plotly not creating linear trend line
在为散点图创建趋势线时,我使用 add_trace
添加线性趋势线。
当数据只有一个"series"数据,即只有一组坐标时,下面的代码可以正常工作。但是,当我介绍一些系列时,"trend line" 看起来像这样:
代码的相关部分如下:
p <- plot_ly(filteredFull(), x=Relative.Time.Progress, y=cumul.ans.keystroke,
mode='markers', color=KeystrokeRate, size=KeystrokeRate,
marker=list(sizeref=100), type='scatter',
hoverinfo='text', text=paste("token: ",Token, "Keystrokes: ",
KeystrokeCount)) %>%
layout(
xaxis=list(range=c(0,1)),
yaxis=list(range=c(0,max(filteredFull()$cumul.ans.keystroke)))
)
lm.all <- lm(cumul.ans.keystroke ~ Relative.Time.Progress,
data=df)
observe(print(summary(lm.all)))
p <- add_trace(p, y=fitted(lm.all), x=Relative.Time.Progress,
mode='lines') %>%
layout(
xaxis= list(range = c(0,1))
)
p
如有必要,我可以添加更多代码,或尝试制作一个最小的工作示例。但是,我希望这是一个从代码中显而易见的常见问题。
我认为您需要在 add_trace(p, y=fitted(lm.all), x=Relative.Time.Progress, mode='lines')
中指定 data = ...
参数。
第一条轨迹似乎是一个子集,但第二条轨迹使用回归拟合值,这些值是通过将回归模型拟合到整个数据集而获得的。
filteredFull()
与 df
中的 Relative.Time.Progress
之间可能存在不匹配。
这是一个例子。希望能有所帮助...
library(plotly)
df <- diamonds[sample(1:nrow(diamonds), size = 500),]
fit <- lm(price ~ carat, data = df)
df1 <- df %>% filter(cut == "Ideal")
plot_ly(df1, x = carat, y = price, mode = "markers") %>%
add_trace(x = carat, y = fitted(fit), mode = "lines")
plot_ly(df1, x = carat, y = price, mode = "markers") %>%
add_trace(data = df, x = carat, y = fitted(fit), mode = "lines")
现在有点变化,下面的代码应该可以正常工作:
df <- diamonds[sample(1:nrow(diamonds), size = 500),]
fit <- lm(price ~ carat, data = df)
df1 <- df %>% filter(cut == "Ideal")
plot_ly() %>%
add_trace(data = df1, x = ~carat, y = ~price, mode = "markers") %>%
add_trace(data = df, x = ~carat, y = fitted(fit), mode = "lines")
需要从空绘图开始,然后添加痕迹。
在为散点图创建趋势线时,我使用 add_trace
添加线性趋势线。
当数据只有一个"series"数据,即只有一组坐标时,下面的代码可以正常工作。但是,当我介绍一些系列时,"trend line" 看起来像这样:
代码的相关部分如下:
p <- plot_ly(filteredFull(), x=Relative.Time.Progress, y=cumul.ans.keystroke,
mode='markers', color=KeystrokeRate, size=KeystrokeRate,
marker=list(sizeref=100), type='scatter',
hoverinfo='text', text=paste("token: ",Token, "Keystrokes: ",
KeystrokeCount)) %>%
layout(
xaxis=list(range=c(0,1)),
yaxis=list(range=c(0,max(filteredFull()$cumul.ans.keystroke)))
)
lm.all <- lm(cumul.ans.keystroke ~ Relative.Time.Progress,
data=df)
observe(print(summary(lm.all)))
p <- add_trace(p, y=fitted(lm.all), x=Relative.Time.Progress,
mode='lines') %>%
layout(
xaxis= list(range = c(0,1))
)
p
如有必要,我可以添加更多代码,或尝试制作一个最小的工作示例。但是,我希望这是一个从代码中显而易见的常见问题。
我认为您需要在 add_trace(p, y=fitted(lm.all), x=Relative.Time.Progress, mode='lines')
中指定 data = ...
参数。
第一条轨迹似乎是一个子集,但第二条轨迹使用回归拟合值,这些值是通过将回归模型拟合到整个数据集而获得的。
filteredFull()
与 df
中的 Relative.Time.Progress
之间可能存在不匹配。
这是一个例子。希望能有所帮助...
library(plotly)
df <- diamonds[sample(1:nrow(diamonds), size = 500),]
fit <- lm(price ~ carat, data = df)
df1 <- df %>% filter(cut == "Ideal")
plot_ly(df1, x = carat, y = price, mode = "markers") %>%
add_trace(x = carat, y = fitted(fit), mode = "lines")
plot_ly(df1, x = carat, y = price, mode = "markers") %>%
add_trace(data = df, x = carat, y = fitted(fit), mode = "lines")
现在有点变化,下面的代码应该可以正常工作:
df <- diamonds[sample(1:nrow(diamonds), size = 500),]
fit <- lm(price ~ carat, data = df)
df1 <- df %>% filter(cut == "Ideal")
plot_ly() %>%
add_trace(data = df1, x = ~carat, y = ~price, mode = "markers") %>%
add_trace(data = df, x = ~carat, y = fitted(fit), mode = "lines")
需要从空绘图开始,然后添加痕迹。