stat_smooth gam 与 gam {mgcv} 不同

2024-03-04

我当时用的是stat_smooth函数于ggplot2,决定我想要“拟合优度”,并为此使用了 mgcv GAM。我突然想到我应该检查以确保它们是同一型号(stat_smooth与 mgcv 相比gam),所以我使用下面的代码来检查。

看起来,他们有不同的结果,正如情节所证明的那样(Plot: stat_smoothergam(红色),mgcvgam (black) https://i.stack.imgur.com/9xpFv.png)。但是,我不知道为什么他们有不同的结果。两者之间的某些默认参数是否不同?是就是那个gam· is being run on a numeric x and ·stat_smooth· is being run with a POSIXct x (if so - I don't know what to do about that). It looks like stat_smooth` 更平滑,但 k 值相同......

我认为有几篇关于如何绘制游戏输出的帖子ggplot2,但我真的很想知道为什么stat_smooth和 mgcv 首先给出了不同的结果。我对 GAM(和 R)非常陌生,所以我很可能错过了一些简单的东西。不过,在询问之前我已经谷歌搜索了这个论坛。

我的数据有点大,无法轻松共享,因此我使用了一个示例数据集 - 我已将源代码以及dput()在一切之下,以及我的sessionInfo()在那之后。

我曾尝试提出一个高质量的问题,但这只是我的第二个问题。曾经。因此,建设性的批评是值得赞赏的。

谢谢你!

library(readxl)
library(data.table)
library(ggplot2)
library(scales)
library(mgcv)

stackOF_data <- read_excel("mean-daily-flow-cumecs-vatnsdals.xlsx", sheet = "Data")
stackOF_data <- data.table(stackOF_data)
stackOF_data <- stackOF_data[,.(timeseries=as.POSIXct(Date,format("%Y-%m-%d")),mdf)]

a <- stackOF_data[,.(x=as.numeric(timeseries),y=mdf)]
a1 <- gam(y~s(x, k=100, bs="cs"),data=a) 
a2=data.table(gam_mdf= predict(a1,a))
a2=cbind(timeseries=stackOF_data$timeseries,a2)

# see if predict and actual are the same
p <- ggplot() + 
geom_line(data = a2, aes(x = timeseries, y = gam_mdf), size=1)+
scale_color_manual(values=c("black","magenta"))+
scale_y_continuous()+
scale_x_datetime(labels = date_format("%Y-%m-%d"), breaks = "1 month", minor_breaks = "1 week")+ 
theme(axis.text.x=element_text(angle=50, size=10,hjust=1))+
stat_smooth(data = stackOF_data, aes(x = (timeseries), y = mdf),method="gam", formula=y~s(x,k=100, bs="cs"), col="red", se=FALSE, size=1)
p

# data from: https://datamarket.com/data/set/235m/mean-daily-flow-cumecs-vatnsdalsa-river-1-jan-1972-31-dec-1974#!ds=235m&display=line&s=14l

> dput(a)
structure(list(x = c(126230400, 126316800, 126403200, 126489600, 
126576000, 126662400, 126748800, 126835200, 126921600, 127008000, 
127094400, 127180800, 127267200, 127353600, 127440000, 127526400, 
127612800, 127699200, 127785600, 127872000, 127958400, 128044800, 
128131200, 128217600, 128304000, 128390400, 128476800, 128563200, 
128649600, 128736000, 128822400, 128908800, 128995200, 129081600, 
129168000, 129254400, 129340800, 129427200, 129513600, 129600000, 
129686400, 129772800, 129859200, 129945600, 130032000, 130118400, 
130204800, 130291200, 130377600, 130464000, 130550400, 130636800, 
130723200, 130809600, 130896000, 130982400, 131068800, 131155200, 
131241600, 131328000, 131414400, 131500800, 131587200, 131673600, 
131760000, 131846400, 131932800, 132019200, 132105600, 132192000, 
132278400, 132364800, 132451200, 132537600, 132624000, 132710400, 
132796800, 132883200, 132969600, 133056000, 133142400, 133228800, 
133315200, 133401600, 133488000, 133574400, 133660800, 133747200, 
133833600, 133920000, 134006400, 134092800, 134179200, 134265600, 
134352000, 134438400, 134524800, 134611200, 134697600, 134784000, 
134870400, 134956800, 135043200, 135129600, 135216000, 135302400, 
135388800, 135475200, 135561600, 135648000, 135734400, 135820800, 
135907200, 135993600, 136080000, 136166400, 136252800, 136339200, 
136425600, 136512000, 136598400, 136684800, 136771200, 136857600, 
136944000, 137030400, 137116800, 137203200, 137289600, 137376000, 
137462400, 137548800, 137635200, 137721600, 137808000, 137894400, 
137980800, 138067200, 138153600, 138240000, 138326400, 138412800, 
138499200, 138585600, 138672000, 138758400, 138844800, 138931200, 
139017600, 139104000, 139190400, 139276800, 139363200, 139449600, 
139536000, 139622400, 139708800, 139795200, 139881600, 139968000, 
140054400, 140140800, 140227200, 140313600, 140400000, 140486400, 
140572800, 140659200, 140745600, 140832000, 140918400, 141004800, 
141091200, 141177600, 141264000, 141350400, 141436800, 141523200, 
141609600, 141696000, 141782400, 141868800, 141955200, 142041600, 
142128000, 142214400, 142300800, 142387200, 142473600, 142560000, 
142646400, 142732800, 142819200, 142905600, 142992000, 143078400, 
143164800, 143251200, 143337600, 143424000, 143510400, 143596800, 
143683200, 143769600, 143856000, 143942400, 144028800, 144115200, 
144201600, 144288000, 144374400, 144460800, 144547200, 144633600, 
144720000, 144806400, 144892800, 144979200, 145065600, 145152000, 
145238400, 145324800, 145411200, 145497600, 145584000, 145670400, 
145756800, 145843200, 145929600, 146016000, 146102400, 146188800, 
146275200, 146361600, 146448000, 146534400, 146620800, 146707200, 
146793600, 146880000, 146966400, 147052800, 147139200, 147225600, 
147312000, 147398400, 147484800, 147571200, 147657600, 147744000, 
147830400, 147916800, 148003200, 148089600, 148176000, 148262400, 
148348800, 148435200, 148521600, 148608000, 148694400, 148780800, 
148867200, 148953600, 149040000, 149126400, 149212800, 149299200, 
149385600, 149472000, 149558400, 149644800, 149731200, 149817600, 
149904000, 149990400, 150076800, 150163200, 150249600, 150336000, 
150422400, 150508800, 150595200, 150681600, 150768000, 150854400, 
150940800, 151027200, 151113600, 151200000, 151286400, 151372800, 
151459200, 151545600, 151632000, 151718400, 151804800, 151891200, 
151977600, 152064000, 152150400, 152236800, 152323200, 152409600, 
152496000, 152582400, 152668800, 152755200, 152841600, 152928000, 
153014400, 153100800, 153187200, 153273600, 153360000, 153446400, 
153532800, 153619200, 153705600, 153792000, 153878400, 153964800, 
154051200, 154137600, 154224000, 154310400, 154396800, 154483200, 
154569600, 154656000, 154742400, 154828800, 154915200, 155001600, 
155088000, 155174400, 155260800, 155347200, 155433600, 155520000, 
155606400, 155692800, 155779200, 155865600, 155952000, 156038400, 
156124800, 156211200, 156297600, 156384000, 156470400, 156556800, 
156643200, 156729600, 156816000, 156902400, 156988800, 157075200, 
157161600, 157248000, 157334400, 157420800, 157507200, 157593600, 
157680000), y = c(4.65, 4.65, 4.65, 4.48, 5.16, 5.52, 5.34, 5.34, 
4.82, 4.65, 4.48, 4.31, 4.31, 4.31, 4.14, 3.82, 3.98, 3.98, 4.31, 
5.71, 6.5, 6.3, 5.71, 5.71, 5.16, 4.65, 4.14, 3.98, 4.48, 4.48, 
4.31, 4.65, 4.31, 3.98, 3.98, 3.98, 3.98, 3.98, 3.98, 3.82, 3.67, 
3.67, 3.98, 3.98, 3.82, 3.82, 3.82, 4.14, 5.9, 4.48, 3.98, 3.98, 
3.82, 3.67, 3.67, 3.67, 4.65, 3.98, 4.31, 4.31, 3.67, 4.31, 6.1, 
7.3, 7.5, 7.5, 8.14, 10.8, 16.1, 14.8, 12.5, 9.9, 8.14, 6.9, 
6.1, 5.34, 5.16, 4.99, 4.99, 4.99, 4.99, 5.52, 6.3, 7.3, 6.9, 
5.9, 5.71, 5.71, 8.58, 31.5, 33.7, 18.4, 11.3, 16.1, 32.9, 45.3, 
54, 25.7, 18, 15.9, 15.6, 14.5, 15.9, 35.9, 37.5, 29.4, 27.5, 
30.1, 27.5, 30.8, 29.4, 22, 20.1, 35.9, 36.7, 32.9, 22, 18, 15.9, 
15.2, 14.8, 13, 12.7, 12.5, 11, 9.68, 8.8, 7.92, 7.3, 6.9, 7.3, 
10.3, 11, 11.3, 11.9, 12.5, 13.6, 12.2, 10.8, 9.9, 9.46, 8.8, 
7.5, 7.1, 7.71, 7.1, 6.1, 5.34, 5.34, 5.34, 5.52, 5.52, 6.3, 
6.7, 6.5, 5.9, 5.71, 5.9, 5.71, 5.52, 7.3, 7.5, 7.1, 7.3, 6.7, 
6.9, 7.3, 7.5, 10.8, 11.6, 8.58, 7.92, 7.1, 6.7, 6.5, 6.1, 5.9, 
5.9, 5.71, 5.52, 5.52, 5.52, 5.9, 5.9, 5.71, 5.52, 5.52, 5.34, 
5.34, 5.52, 6.5, 6.5, 5.71, 5.34, 5.16, 4.99, 4.82, 4.82, 4.99, 
4.82, 4.82, 4.82, 4.82, 4.82, 4.65, 4.48, 4.48, 4.31, 4.31, 4.14, 
4.14, 4.31, 4.48, 4.31, 4.31, 4.31, 4.99, 5.71, 6.3, 6.1, 6.1, 
5.9, 5.71, 5.52, 5.52, 5.52, 5.52, 5.52, 5.34, 5.34, 5.52, 5.52, 
5.52, 5.34, 5.34, 5.52, 5.34, 5.52, 5.52, 5.34, 5.34, 5.34, 5.34, 
5.71, 5.9, 6.3, 6.9, 7.5, 6.5, 6.1, 6.1, 5.9, 6.1, 6.1, 5.9, 
6.5, 6.5, 6.1, 5.9, 5.9, 5.71, 5.9, 5.9, 5.71, 4.99, 4.65, 5.16, 
5.34, 5.34, 4.65, 4.99, 5.71, 5.34, 5.34, 5.34, 5.34, 4.99, 5.34, 
5.34, 5.34, 5.34, 5.52, 5.34, 5.52, 5.71, 6.5, 7.71, 6.9, 6.5, 
6.7, 6.1, 5.9, 6.1, 5.9, 5.71, 7.92, 7.71, 7.1, 7.92, 5.34, 5.16, 
8.14, 10.1, 7.92, 7.3, 6.9, 6.9, 6.9, 8.58, 7.3, 6.9, 7.3, 6.3, 
5.16, 6.1, 5.52, 4.99, 5.34, 5.34, 5.34, 5.16, 5.71, 5.52, 5.52, 
5.16, 4.82, 5.52, 6.1, 5.9, 5.71, 5.52, 5.16, 4.99, 4.48, 4.82, 
5.16, 5.16, 5.16, 5.16, 5.16, 4.82, 4.65, 3.82, 4.14, 4.65, 4.65, 
4.31, 4.31, 5.16, 5.16, 5.16, 5.16, 5.16, 4.99, 4.65, 5.16, 5.16, 
5.16, 5.16, 5.16, 5.16, 5.16, 5.16, 5.34, 5.34)), .Names = c("x", 
"y"), row.names = c(NA, -365L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x0000000005860788>)

> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United         States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.9.6 readxl_0.1.0     mgcv_1.8-7       nlme_3.1-121         scales_0.3.0     sos_1.3-8        brew_1.0-6       ggplot2_1.0.1   
[9] MASS_7.3-43     

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.1      lattice_0.20-33  digest_0.6.8     chron_2.3-47     grid_3.2.2       plyr_1.8.3       gtable_0.1.2     magrittr_1.5    
 [9] stringi_0.5-5    reshape2_1.4.1   Matrix_1.2-2     labeling_0.3     proto_0.3-10     tools_3.2.2      stringr_1.0.0    munsell_0.4.2   
[17] colorspace_1.2-6

部分解决方案

我仍然不知道为什么这两种方法给出不同的答案,这让我很困扰。然而,经过大量的互联网搜索,我确实找到了以下解决方法:

library(readxl)
library(data.table)
library(ggplot2)
library(scales)
library(mgcv)

stackOF_data <- read_excel("C:/Users/jel4049/Desktop/mean-daily-flow-cumecs-    vatnsdals.xlsx", sheet = "Data")
stackOF_data <- data.table(stackOF_data)

stackOF_data <- stackOF_data[,.(timeseries=as.POSIXct(Date,format("%Y-%m-%d")),mdf)]
a <- stackOF_data[,.(x=as.numeric(timeseries),y=mdf)]
a1 <- gam(y~s(x, k=100, bs="cs"),data=a) 
a2=data.table(gam_mdf = predict(a1,a))

preds <- predict(a1,se.fit=TRUE)
my_data <- data.frame(mu=preds$fit, low =(preds$fit - 1.96 * preds$se.fit), high = (preds$fit + 1.96 * preds$se.fit))


m <- ggplot()+
  geom_line(data = a2, aes(x=stackOF_data$timeseries, y=gam_mdf), size=1, col="blue")+
  geom_smooth(data=my_data,aes(ymin = low, ymax = high, x=stackOF_data$timeseries, y = mu), stat = "identity", col="green")
m

现在至少我知道我可以从一些 mgcv 函数获得的摘要和数据拟合质量信息与我的图相匹配。


事实证明,您看到的差异是因为您使用的是默认值n论证中stat_smooth.

从帮助页面:

n 评估平滑度的点数

当然,我并没有立刻意识到这意味着n控制数据集的大小newdata论证中predict因此stat_smooth进行预测时不使用原始数据集。但我正在读这个很好的答案 https://stackoverflow.com/a/33173779/2461552在不同的stat_smooth问题并意识到要弄清楚发生了什么,我应该仔细看看stat_smooth预测与来自拟合的手动预测gam模型。

因此,使用我命名为 OP 的数据集dat,我们可以检查发生了什么。

情节当k = 100,通过拟合模型后gam并将预测添加到数据集中。正如您所指出的,蓝色(stat_smooth)和黑色(手动预测)不匹配。

dat$predgam = predict(gam(y ~ s(x, k = 100), data = dat))

(p1 = ggplot(dat, aes(x, y)) +
    geom_point() +
    geom_smooth(method = "gam", formula = y ~ s(x, k = 100)) +
    geom_line(aes(y = predgam)))

您可以随时使用ggplot_build查看您的绘图对象并查看组成它的所有部分(我没有在此处显示结果,因为它占用了太多空间,但输出将打印到您的控制台)。

ggplot_build(p1)

预测数据集为stat_smooth是数据集列表中的第二个。

ggplot_build(p1)$data[[2]]

但看看该数据集有多少行:

nrow(ggplot_build(p1)$data[[2]])
[1] 80

默认设置为n参数为 80,但数据集中有 365 行。那么如果你改变会发生什么n到365?我会将平滑的线条加粗,这样您就可以真正看到它(蓝色)。

(p2 = ggplot(dat, aes(x, y)) +
    geom_point() +
    geom_smooth(method = "gam", formula = y ~ s(x, k = 100), n = 365, size = 2) +
    geom_line(aes(y = predgam)))
nrow(ggplot_build(p2)$data[[2]])
[1] 365

如果你看一下代码predictdf详细信息部分中提到的功能stat_smooth在帮助页面上,您会看到进行预测时未使用原始数据集。相反,序列是由原始解释变量组成的。当处理小数据集时,这一点非常重要,并且您需要更多的预测点才能使线条看起来平滑。不过,就您而言,原始数据集已经是一个很好的平滑序列x所以使用n = 365得到相同的预测stat_smooth就像原始数据集一样。

你可以看到代码predictdf here https://github.com/hadley/ggplot2/blob/master/R/stat-smooth-methods.r.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stat_smooth gam 与 gam {mgcv} 不同 的相关文章

  • R 监督潜在狄利克雷分配包

    我在用着这个LDA包 https cran r project org web packages lda 对于 R 具体来说 我正在尝试做监督潜在狄利克雷分配 slda https www cs princeton edu blei pap
  • 为什么在 R 中绘图时,hovertemplate 无法正确显示某些数据点

    mydat2 lt data frame subject c math english chemistry score c 80 50 65 class c A B A count c 50 60 70 library plotly plo
  • 如何修改反应链以便最后修改的对象控制其他链接的对象?

    新注释 1 最终解决的代码发布在最底部 反映了 ismirsehregal 于 2021 年 12 月 3 日的解决方案 以及一些标记为 ADDED 和 MODIFIED 的小调整 ADD 是为了解决我在矩阵 2 添加值后从矩阵 1 中删除
  • 如何在 R 中创建纯 ascii 表作为输出,类似于 MySQL 风格?

    我正在尝试为 R 找到一个输出的函数data frameMySQL 风格的 ascii 表中的对象如下 id var1 var2 1 asdf g 2 asdf h 3 asdf j 有这样的功能吗 至少有两个工具可以做到这一点 csvfi
  • R:igraph、社区检测、edge. Betweenness 方法、统计/列出每个社区的成员?

    我有一个相对较大的图表 其中顶点 524 边 1125 是现实世界的交易 边是有向的并且具有权重 包含是可选的 我正在尝试调查图中的各个社区 并且本质上需要一种方法 计算所有可能的社区 计算最佳社区数量 返回每个 最佳 社区的成员 成员数量
  • 省略 RColorBrewer 调色板上较亮的颜色以在 ggplot2 中使用

    我想在 RColorBrewer 的 Oranges 调色板中使用较深的颜色 以便在我的 ggplot 条形图 中使用 然而我却做不到 帮助 下面是示例代码 my palette brewer pal n 9 Oranges 4 9 Bar
  • 包什么时候需要为它自己的对象使用 :::

    考虑这个 R 包有两个函数 一个是导出函数 另一个是内部函数 hello R export hello lt function internalFunctions hello internal 你好 内部 R hello internal
  • 了解日期并使用 R 中的 ggplot2 绘制直方图

    主要问题 当尝试使用 ggplot2 制作直方图时 我无法理解为什么日期 标签和中断的处理无法像我在 R 中预期的那样工作 我在找 我的约会频率的直方图 刻度线位于匹配条下方的中心 日期标签在 Y b format 适当的限制 最小化网格空
  • 如何在复杂的皂膜GAM中设置更平滑的边界条件?

    我正在对南太平洋岛屿泻湖中宽吻海豚的分布进行建模 我想使用肥皂膜平滑器来模拟海豚在二维表面 经度 x 纬度 上存在的概率 考虑到陆地边界 显然海豚不能在陆地上行走 我想知道如何将我的研究区域 陆地和近海水域 的边界固定为等于零的条件 因为我
  • 二部图匹配以匹配两个集合

    我是新手igraphR 中的包 我有两套A and B 每个都有N顶点 A1 A2 AN and B1 B2 BN 每个元素之间都有一个边缘A对每一个元素B 我有一个函数fWgt Ai Bj 返回之间的边的权重Ai and Bj 我一直在尝
  • 在 mutate pipeline 中按组获取唯一 ID [重复]

    这个问题在这里已经有答案了 自从新的 dplyr v1 0 0 更新发布以来 我注意到该功能group indices 有 已弃用 我在工作中经常使用这个功能 并且我喜欢在mutate 例如使用dplyr v0 8 3我能够非常轻松地做这样
  • R中两个时间之间的时间差

    我正在尝试计算 R 中两个时间之间的差异 例如 两个时间之间的时间差 03 15 和 01 40 将为 1 小时 35 分钟 我在 R 中尝试了以下代码 difftime 03 15 01 40 tz units secs 但我收到以下错误
  • 使用 R 进行语言相关排序

    1 如何正确排序 任务是根据英文字母对美国州名缩写进行排序 但我注意到 R 根据某种操作系统语言或区域设置对列表进行排序 例如 在我的语言 立陶宛语 中 甚至拉丁语 非立陶宛语 字母的顺序也与英语字母表中的顺序不同 仅比较两个字母表中的非立
  • 可以使用部分名称访问列表成员吗?这是一个功能吗?

    考虑这个 R 代码 gt l list key 1 gt l k 1 1 gt l ke 1 1 gt l k NULL gt names l 1 key 这是否意味着您可以使用以下方式访问列表成员 及其部分名称 当我在一次令人沮丧的错误搜
  • 使用条件求 R 中的累积和

    我需要创建一个新变量 其中包含每个 ID 过去三年金额的总和 如果没有三年的数据 则应显示 NA 举个例子 ID YEAR AMOUNT 1 2010 5 1 2011 2 1 2012 4 1 2013 1 1 2014 3 2 2013
  • 从R中的序列中随机提取多个连续项

    Frag lt seq 1 30000 K lt 9 P lt sample 1 K 1 sys sample lt Frag seq P length Frag K 现在 sys sample 包含 3333 个数字 如何在R中随机提取1
  • 平滑手绘曲线

    我有一个允许用户绘制曲线的程序 但这些曲线看起来不太好 它们看起来摇摇欲坠 而且是手绘的 所以我想要一种能够自动平滑它们的算法 我知道平滑过程中存在固有的模糊性 因此它不会每次都完美 但这种算法似乎确实存在于多个绘图包中 并且它们工作得很好
  • 如何从 Matlab 运行 R 脚本 [重复]

    这个问题在这里已经有答案了 我有 m 文件 我想用它来运行 R 脚本 我怎样才能做到这一点 Matlab文件 caller m some matlab code need to call a R script some matlab cod
  • 在模块中使用shiny的renderUI

    这是我在 stackoverflow 上的第一个问题 我在闪亮 1 0 5 中遇到模块和 renderUI 的问题 当我在中使用 renderUI 时 Main Part ui lt bootstrapPage uiOutput Dynam
  • 使用循环(或向量化)按向量中的多个元素对列表进行子集化

    我有3个清单data frames my list lt list a data frame value c 1 5 class c letters 1 3 a b b data frame value c 6 1 class c lett

随机推荐

  • 滚动到模式窗口内的元素

    我有一个模式窗口 需要能够打开模式 然后将用户滚动到模式中的特定位置 我正在使用 AJAX 将模态内容获取到 PHP 脚本 例如 mypage php loc someid 在 PHP 脚本中 我有这个 JS 来执行滚动 document
  • URI 中的方案是可选的吗?

    最近 我被要求向网站添加一些 Woopra JavaScript 并注意到 URL 以双斜杠开头 即省略了方案 我以前从未见过这个 所以我试图了解更多信息 但我唯一能找到的是Woopra 常见问题解答中的一个项目 http www woop
  • Travis 无法构建 Android 项目,没有 local.properties

    事情是这样的 我已经在 Travis CI 上构建了我的项目好几次了 但每次都会遇到同样的问题 错误日志 What went wrong A problem occurred evaluating root project LiteRead
  • Eclipse 在 Ctrl-S 上跳转到函数名称

    当我按 Ctrl S 将 Java 文件保存在 Eclipse 中时 它会跳转到函数名称 这很烦人 有人知道该怎么办吗 转到 窗口 gt 首选项 gt 常规 gt 按键 您也可以搜索Keys在主首选项窗口中 您很可能添加了一个绑定 当您按下
  • 创建圆形鼠标悬停饱和效果

    我有两个版本的图像 去饱和版本和全彩版本 我想要实现的是悬停效果 其中将鼠标悬停在去饱和图像上会显示图像的彩色版本的圆圈 这有点像将聚光灯照射在饱和度降低的图像上以显示其颜色 然后 当您将鼠标移开时 它会淡回到不饱和状态 我知道我可能可以使
  • 如何扩展 OAuth2 主体

    我们正在开发一个将 OAuth 2 用于两个用例的应用程序 访问后端微服务 使用client credentials 验证应用程序的用户 使用authorization code 因此将用户重定向到 Keycloak 进行登录 大致配置如下
  • 新手入门:ruby 中的实例变量?

    请原谅这个新手问题 但为什么 game score 总是为零 bowling rb class Bowling game score 0 def hit pins game score game score pins end def sco
  • 如何在Python中调用同一类的不同实例?

    我是Python新手 我正在 SimPy 中编写一个模拟来对生产线进行建模 如下所示 机器 1 gt 缓冲区 1 gt 机器 2 gt 缓冲区 2 gt 等等 我的问题 我有一个类 Machine 其中有多个实例 假设当前实例是机器 2 该
  • 如何在 Google App Engine 上用 Python 解析 xml

    为了这以下 XML http www boardgamegeek com xmlapi boardgame 13 如何获取 xml 然后解析它以获取值
  • 使用 fscanf() 与 fgets() 和 sscanf()

    在 实用 C 编程 一书中 我发现结合了fgets and sscanf 用于读取输入 然而 在我看来 仅使用以下方法就可以更轻松地实现相同的目标fscanf 功能 来自书中 想法 而不是示例 int main int age weight
  • HighCharts 动态改变图表类型

    在 ASP NET 站点中使用 HighCharts 2 2 3 看http jsfiddle net wergeld TDLvc http jsfiddle net wergeld TDLvc 代码示例 我的网站设置与 jsFiddle
  • 核心数据 NSManagedObject - 跟踪属性是否更改

    我有一个对象 Config 我想知道是否Account属性上Config已经改变 当这种情况发生时 我想发送一个NSNotification这样所有关心何时的代码Account变化就会知道 我最初的想法是在我的NSManagedObject
  • 哈希映射宏拒绝类型检查,失败并出现误导性(并且看似有缺陷)的错误消息?

    我这里有这两个相关的宏 macro export macro rules hash map key expr gt value expr gt use std iter FromIterator std collections HashMa
  • C 中常量表达式的详细内容是什么?

    C 定义了至少 3 个级别的 常量表达式 常量表达式 非限定 算术常量表达式 整型常量表达式 6 6 第 3 段如下 常量表达式不得包含赋值 递增 递减 函数调用 或逗号运算符 除非它们包含在不存在的子表达式中 评价 那么这是否意味着1 2
  • 如何测试不太可能发生的并发场景?

    例如 这样的地图访问 func pool fPool fetch url string ResultPromise pool cacheLock RLock if rp pres pool cache url pres pool cache
  • 有没有办法覆盖 pytest (python) 中的默认断言?

    我想在每次调用断言时将一些信息记录到文件 数据库中 有没有办法在每次调用断言时覆盖断言或注册某种回调函数来执行此操作 问候 沙拉德 尝试超载AssertionError代替assert 原始断言错误可在异常模块 https docs pyt
  • WPF 是否有按住手势?

    WPF 是否有按住手势 我找不到相关的事件 所以我尝试为自己实现一个 我知道有Stylus类但在 WPF 中它对我没有帮助 如果没有 那就是我的代码 using System using System Collections Generic
  • Array.Empty():为什么 Rider 显示已发生分配,但 BenchmarkDotNet 却没有?

    第一张图片中使用的记忆工具来自 Rider 据我所知 它显示了托管堆的分配 第二张图显示了 BenchmarkDotNet 的结果 为什么 Rider 显示已进行分配 但 BenchmarkDotNet 表明未对堆进行分配 如果我改用下面的
  • 使用水晶报表中的公式更改文本对象的颜色

    I want to change the color of the text in text object using formula in Crystal Report I tried like If mnth ttx weight gt
  • stat_smooth gam 与 gam {mgcv} 不同

    我当时用的是stat smooth函数于ggplot2 决定我想要 拟合优度 并为此使用了 mgcv GAM 我突然想到我应该检查以确保它们是同一型号 stat smooth与 mgcv 相比gam 所以我使用下面的代码来检查 看起来 他们