R社交网络分析包在传染病传播链可视化的应用

初衷 在这次疫情处理过程中,了解到在梳理传播链的过程中,很多时候仍然是手工在powerpoint等软件绘制传播链的。采用这种方式的优点能够在图中根据设计者需要加入较多的信息,比如:人员大致位置分布,接触的途径和强度等信息。不足之处在于,在链条上节点(感染者)较少的时候还能够梳理得很明确,但一旦节点达到一定数量,其中关系复杂度将呈几何倍数增加(比如1人传多个,1人与多个感染者有接触之类)。 在这种情况下。单纯的手工整理,将耗费非常多的脑力。最严重的缺点是,当现场流调信息变更,对链条进行修订的时,其中一个节点或链接的变化,会因连锁作用导致整个链条的变化。节点越多,变化的影响范围越大,越复杂,就像整理线头一样。当感染者人数上升到一定数量时,手动整理已经变成了一件难以完成的事情。由于本人对R的热衷,探索了一下能不能使用软件自动化链就是自己懒嘛的方式绘制传播,使用igraph,ggraph和networkD3最终效果如下面几张图,个人觉得还是networkD3炫酷的互动效果最好。 具体制作过程 参见我使用的3个包的说明。。。。。详细步骤待补充。 数据 节点数据 节点数据里面只需要包含所有感染者的基本信息,比如编号,姓名,类别等等。 边数据 边数据最基础的要求为,节点数据左右感染者的对应关系,简单说就像Excel两列,第一列from, 第二列to,代表每一行两个感染者的关系,从谁传播到谁,当然这些资料需要辛苦在现场的流调专家们提供。 可视化 igraph 首先使用graph_from_data_frame(d =line, vertices = node, directed = T)将节点和边转换成igraph,就可以直接plot第一张图, 参数自己可以调节。 netwokd3 个人最喜欢的效果,使用igraph_to_networkD3命令,将igraph数据转换一下,就可以使用simpleNetwork,forceNetwork,sankeyNetwork(画出交互性网络图了。试验了下,手机浏览器一样可以互动,包括拖动节点,放大,移动等,非常棒的体验。 {"x":{"links":{"source":[2,8,10,12,3,7,56,2,14,13,1,56,0,2,2,2,2,3,4,5,6,7,7,1,56,1,9,2,11,6,24,3,56,7,12,12,1,12,12,6,7,10,15,15,7,28,30,12,7,56,16,14,14,17,37,18,53,2,56,1,5,3,6],"target":[10,11,12,12,13,14,15,16,17,18,19,19,1,20,21,22,23,24,25,26,27,28,29,2,2,30,31,32,33,34,35,35,36,37,38,39,3,40,41,42,43,44,45,46,47,47,47,48,49,4,50,51,52,53,53,54,55,5,6,7,8,9,9],"value":[8,4,8,3,8,8,4,8,8,4,8,3,3,8,8,8,8,8,8,8,8,8,8,8,3,4,8,8,8,8,3,8,4,8,6,8,3,8,8,8,8,8,8,8,8,3,3,8,8,4,8,8,8,8,3,8,4,8,4,4,8,4,2],"colour":["#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666","#666"]},"nodes":{"name":["0号","1号","2号","3号","4号","5号","6号","7号","8号","9号","10号","11号","12号","13号","14号","15号","16号","17号","18号","19号","20号","21号","22号","23号","24号","25号","26号","27号","28号","29号","30号","31号","32号","33号","34号","35号","36号","37号","38号","39号","40号","41号","42号","43号","44号","45号","46号","47号","48号","49号","50号","51号","52号","53号","54号","55号","56号"],"group":[2,2,2,1,7,2,1,6,5,1,2,5,8,4,3,9,2,3,4,2,2,2,2,2,1,7,2,1,6,6,6,1,2,5,1,1,2,3,8,8,8,8,1,6,2,9,9,6,8,6,2,3,3,3,4,3,2],"nodesize":[200,150,30.6,34,35.6,43.1,40.5,10.8,46.9,44.5,42.8,46.8,22.8,27.3,25.4,18.7,11,14.2,23.1,12.4,31.3,11.1,21.7,11.6,11.2,1.3,24,48.2,33.1,2.9,29.2,15.5,45.1,38,23.8,44.4,32.7,15,36,41.2,4.8,22.9,1.6,38.9,41.1,38.6,43.3,9.9,2.1,46.1,12,42.3,1.8,18.9,40.6,27.9,20]},"options":{"NodeID":"name","Group":"group","colourScale":"d3.scaleOrdinal(d3.schemeCategory20);","fontSize":12,"fontFamily":"serif","clickTextSize":30,"linkDistance":50,"linkWidth":"function(d) { return Math.sqrt(d.value); }","charge":-30,"opacity":2,"zoom":true,"legend":false,"arrows":true,"nodesize":true,"radiusCalculation":" Math.sqrt(d.nodesize)+6","bounded":false,"opacityNoHover":1,"clickAction":null}},"evals":[],"jsHooks":[]} {"x":{"links":{"source":[2,8,10,12,3,7,56,2,14,13,1,56,0,2,2,2,2,3,4,5,6,7,7,1,56,1,9,2,11,6,24,3,56,7,12,12,1,12,12,6,7,10,15,15,7,28,30,12,7,56,16,14,14,17,37,18,53,2,56,1,5,3,6],"target":[10,11,12,12,13,14,15,16,17,18,19,19,1,20,21,22,23,24,25,26,27,28,29,2,2,30,31,32,33,34,35,35,36,37,38,39,3,40,41,42,43,44,45,46,47,47,47,48,49,4,50,51,52,53,53,54,55,5,6,7,8,9,9],"value":[8,4,8,3,8,8,4,8,8,4,8,3,3,8,8,8,8,8,8,8,8,8,8,8,3,4,8,8,8,8,3,8,4,8,6,8,3,8,8,8,8,8,8,8,8,3,3,8,8,4,8,8,8,8,3,8,4,8,4,4,8,4,2]},"nodes":{"name":["0号","1号","2号","3号","4号","5号","6号","7号","8号","9号","10号","11号","12号","13号","14号","15号","16号","17号","18号","19号","20号","21号","22号","23号","24号","25号","26号","27号","28号","29号","30号","31号","32号","33号","34号","35号","36号","37号","38号","39号","40号","41号","42号","43号","44号","45号","46号","47号","48号","49号","50号","51号","52号","53号","54号","55号","56号"],"group":["0号","1号","2号","3号","4号","5号","6号","7号","8号","9号","10号","11号","12号","13号","14号","15号","16号","17号","18号","19号","20号","21号","22号","23号","24号","25号","26号","27号","28号","29号","30号","31号","32号","33号","34号","35号","36号","37号","38号","39号","40号","41号","42号","43号","44号","45号","46号","47号","48号","49号","50号","51号","52号","53号","54号","55号","56号"]},"options":{"NodeID":"name","NodeGroup":"name","LinkGroup":null,"colourScale":"d3.scaleOrdinal(d3.schemeCategory20);","fontSize":16,"fontFamily":null,"nodeWidth":15,"nodePadding":10,"units":"Letter(s)","margin":{"top":null,"right":null,"bottom":null,"left":null},"iterations":20,"sinksRight":true}},"evals":[],"jsHooks":[]} ggraph ggraph基本研用了ggplot2绘图的方式,画出来的图也相对更漂亮。首先使用tidygraph包将igraph类型的数据转换为ggraph更合适的元数据。然后可以愉快地使用ggplot2的方式画图了。

March 25, 2022 · Luo Fei

R爬上海疫情数据简单可视化分析(4月7日更新)

今天本地的疫情终于没有增加,抽了点时间关注其他地区的疫情形势。看官方通报的数据,对曾经的模范城市的疫情有兴趣,决定来简单看看。 1 数据获取 1.1 数据来源 要获取准确的数据,当然是上官方网站。打开上海市卫健委的官网(https://wsjkw.sh.gov.cn/xwfb/index.html),疫情数据公告都在“新闻发布”栏目中,再仔细一看,疫情信息的标题中就包含了所有新增、确诊数据。真是太方便了。新闻页面也是连续的以_[num]为页码的编号,这种页面爬起来不要太省事。 1.2 R包 首先加载需要用到的包,主要使用rvest包获取静态网页信息,谷歌浏览器selectorgadget插件获取需要信息的节点,tidyverse整理数据,绘图,lubridate包处理日期变量。 library(rvest) library(tidyverse) library(lubridate) library(readxl) library(openxlsx) library(ggforce) library(mgcv) 1.3 主页信息获取 使用selectorgadget在网页上找到需要的变量“时间”和“标题”,对应的node分别是.time和.list-data a,使用rvest抓取后,转为文本存储在列表中。 ## 设置url url <- "https://wsjkw.sh.gov.cn/xwfb/index.html" ## 获取首页信息 content <- read_html(url) reportdate <- content %>% html_nodes(".time") %>% html_text() %>% as.Date.character() title <- content %>% html_nodes(".list-date a") %>% html_text() basedata <- tibble(reportdate = reportdate, title = title) 1.4 爬取所有数据 上海的疫情变化主要从3月开始,但为了查看之前的变化,是否输入病例压力增大导致本次疫情,因此爬取了2到200页到的数据。改用purrr包的map_df函数爬取。 ##使用循环爬取2到200也网页信息 url_1 <- c("https://wsjkw.sh.gov.cn/xwfb/index.html", paste0("https://wsjkw.sh.gov.cn/xwfb/index_", c(2:200), ".html")) webfun_0 <- function(url){ webpage <- read_html(url) tibble( "reportdate" = webpage %>% html_nodes("....

March 24, 2022 · Luo Fei

20年前的坑  [draft]

这是自己20年前因暗黑破坏神和英雄无敌3游戏有感而创作的。。放这里存档! 1 启程 透过破烂的窗户,骑士萨德列看到的是象被泼上了黯淡的黑血的天空,墨一样的血慢慢的从天的尽头一直延伸到头顶。那样的死寂,如此的凄凉! 也不知是从什么时候开始世界变成了现在这个样子,萨德列只记得从有记忆开始就是这样,10年过去了,还是这样。想起父亲临终前对自己说的话“萨德列,我的儿子,记着我的话吧。到远方去,遥远的地方,在那里你的使命在召唤你。你是我的儿子,骑士之子,你的命运就此已经注定。”从此,萨德列就开始了流浪,从12岁开始自己就背着父亲的剑和盔甲开始了毫无目的的流浪,仿佛是没有尽头的流浪。10年的流浪…… 可他还是不知道父亲说的远方到底是哪里。他只知道从一个地方飘荡到另一个地方。 “远方,使命!” 一阵敲门声打断了萨德列的回忆。 “进来!” 旅馆的侍女打开门,端上一盘丰盛的晚餐。“先生,你的晚餐!”说完把盘子放在桌上,然后退了出去。萨德列坐下来,开始慢慢享用他的食物。一段辛苦的旅行中最美丽的事情,莫过与在旅馆舒服的洗个澡,再来一份精美的晚餐!最好还能有美酒!可是在这种小旅馆,也只能用这些下三滥厨师弄的东西来将就了。 夜深了,窗外的风呼呼的叫着,仿佛是垂死的精灵的呼吸。萨德列躺在床上,望着天花板,心里又开始了对父亲的思念。父亲总是那样富有智慧,高大的身影总是在心头一次又一次的浮现。他慈祥的脸上露出的笑容可以让自己忘掉所以的不幸与悲伤!萨德列起身拿出父亲的剑。锋利的剑身,被磨得光滑的剑柄。萨德列轻轻的抚摩着。“父亲的味道在散发,是你啊。父亲……” ……. 高大的树木,数不清的树木。漫天的雪花,鹅毛般的飘落。堆积在树上,林间的空地上!雪地上,一串脚印一直延伸到林子的深出。在脚印的尽头是一个靠在一棵参天大树下的人。凛冽的寒风像刀子般的刮着。革拉特已经逃亡了一星期了。整个星期都在这见鬼的森林里,怎么都走不出去,但这样也好。只有大雪才能让那些追踪的家伙也找不到他。革拉特坐在树下,望着漫天的飞雪。炯烁的眼睛凝视着雪花被风吹着打转,他伸出手接住雪花,看它们慢慢的在手中融化。他的嘴角露出一丝笑容,他站起身来,肩上的雪花簌簌的落下来,抬起头望了望天空,笑了笑,又往林子深处前进。他高大的身影慢慢的消失在树木的影子里。 第二天早晨,萨德列起床后在旅馆匆匆吃了点早餐就出去了。这个叫密拉达的小镇属于艾拉西亚王国,是一个龙蛇混杂的地方,各式各样的人都有。也有的不是人,精灵呀,矮人呀,吸血鬼……这片大陆的主要种族这里都有。萨德列来到一家酒馆,酒馆是个好地方,无论你想打听什么消息,或者你想了解一下这个地方的情况,做好的办法就是到这里的酒馆里去看看。这个酒馆的老板是个精灵,罕见的一个年老的精灵。绿色的长发随意地搭到在肩上,最引人注目的还是他那尖尖的耳朵了,让一看就知道是精灵。一身打扮象极了市侩的商贩。萨德列很奇怪,怎么精灵也学着做生意了。萨德列来到柜台前,要了杯葡萄酒,然后自行找了张凳子坐下来。他一边缓慢地品味着杯中的葡萄酒,一边装着随意地观察周围的食客。酒馆不大,大概有20几个人在里面。其中有个红胡子的矮人引起了萨德列的注意,还有就是一个一直呆在角落里一个人喝酒的人。看他的打扮象是一个法师或者炼金士。 突然,一群人恶恨恨地从门口冲进来,最前面的是一个身材高大的家伙,满脸的胡子乱刺刺的毡着,好象是被烧焦了。一群人用目光在酒馆的食客中搜索。最后停在了一个法师打扮的人身上。看上去像带头人的家伙,脸上露出憎恨的表情。他挥了挥手,手下都慢慢的拔出了刀,开始向法师打扮的人走近.酒馆里一些胆小的,怕惹事的都开始从门口跑了出去.那法师打扮的人却依然慢慢的吃着自己的食物,好象根本就不知道那群人的存在。待几个恶棍走到足够近的时候,挥舞着手中各式各样的武器向他扑去。萨德列坐在那里静静的看着这一切的发生.只见那法师打扮的人,手一扬一团火球打在冲在最前面的一个。把他打得直向后飞,撞在后面跟上来的几个身上.魔法的火焰在身上燃烧.几个撞到一起的人身上都着了火,在地上滚来滚去的大叫。但这并没有阻止后面的几个继续向前冲.法师又连续打出几个火球,又是几个人倒下去。可已经有几个到了他跟前。几把明晃晃的刀向他砍去。萨德列已经把自己的剑拿了出来,随时准备出鞘。只见那法师把酒杯里的酒泼出来,酒瞬间在他面前化成了一层冰护盾,几把刀全砍在护盾上。刀的主人也被反弹力震得后退,有一个的刀都脱了手。法师乘机又打出几个火球,又是几个人倒下。萨德列也挺惊讶的,看来这法师还不能小觑,居然还会这种等级的护盾魔法。进来的一群人已经剩下大概不到10个了。萨德列心想不用自己出手,他自己也可以应付了。突然,一只箭插在法师胸口.萨德列心里一惊,朝箭射来的方向望去,只见那个满脸胡子的大汉,手里拿着一把弓箭,冷笑着。大汉继续搭箭,萨德列却飞快拔出剑,象老鹰一般朝大汉冲去。全场人只见一道寒光闪过,大汉呆在那里。萨德列的剑已经在鞘里了。全场的人都楞住了!大汉的弓从中间断开,他眼中充满了恐惧与惊讶。全场的人都清晰的看见一道血痕从大汉眉心裂开.鲜血一下子喷了出来,然后慢慢的倒下。其他恶棍看着眼前的一切,还每反应过来,都还呆站着。萨德列飞快的向法师方向冲过去,随着几道剑光,又是几个恶棍倒下了。剩下的几个丢掉自己手中武器飞一样的跑了。 萨德列快步向法师走过去。法师手捂住胸口,脸上毫无血色。萨德列正要拿绷带给他止血时发现他已经开始使用治疗魔法了。过了大概一分种的样子。法师的脸已经渐渐恢复血色,显得红润了。萨德列刚想和他说话,那法师却开了个传送门走了。只留下他自己一个人站在乱七八糟的旅馆里。他苦笑了一下,自己费半天劲救了人却给自己找了个麻烦,结果自己却连一句感谢的话都没听到。他回到房间拿起自己的行李准备走了。他知道过不了多久就会有一大群人来找他的麻烦了。 萨德列走出小镇没多久,却发现自己又不知道该往哪儿走了。他来到一个叉路口,捡起一小截树枝,然后蹲下来把树枝立起来,树枝倒下了。他就朝着树枝倒下的方向前进。他心里知道,路就跟他的未来一样,自己不知道路的尽头是什么地方,就象不知道前方等待他的又是什么命运。但路是要走的,人也是要活下去的。 2 狼与人 革拉特从树林里出来时已经几乎成了一个雪人。他整理了一下衣服,上面的雪簌簌的掉了下来。他用锐利的眼神观察了一下四周,发现没什么异样的。心里才松了口气,总算把那些家伙摆脱了。 走出森林是一片旷野,放眼望去只能看见一些稀疏的小树林。这可不是一个逃亡的好地方,得赶快走出这里。革拉特知道过了这里就是一座高山了,在那里就好隐蔽了。他打起精神,继续向前走去。 革拉特正走在路上,突然一股危险的信号在脑海闪过,他急忙闪到一快稍微大点的岩石后面。他从岩石后面探出头看了看。远方一群恶狼,正向他的方向靠拢。“该死的,这种时候怎么遇到这群畜生。” 由于在森林的游荡了一个多星期,革拉特已经没多少体力了。 “怎么办怎么办?”革拉特脑子里闪过无数个念头,都被自己一一否决了。野外的狼群是最难对付的。它们大多都是饿了几天的,现在好不容易找到一个猎物怎么会轻易放弃。说不定它们已经跟踪他好久了,直到现在才开始动手的。 革拉特躲在岩石后面,发现自己居然能听到自己的心跳声。自己经历了无数次危险从来没有象现在这样感到无助,绝望。 “难道今天我就会死在这里?死在这些畜生嘴上?老天怎么会这样对我?我还有很多事情要做!” 一股风吹过来,风中带着野兽特有的味道,也是死亡的气味。革拉特已经能听到狼的呼吸声和细小的脚步声。他闭上眼睛,准备等待死亡的来临。当他闭上眼睛后,脑子一下子清醒很多了。耳朵听到的不光是狼的呼吸,还有风的声音,有雪花落下的声音,有自己还在跳动的心。脑中记起了自己的目标,自己的希望还有自己最想念的人的面庞。革拉特一下子醒了过来。 他睁开眼睛,拔出自己的刀,跳出岩石。面对着狼群,他缓缓地举刀,指向狼群。他全身的血都沸腾了。杀气从他的刀上蹦射出来。 狼群中最大的一只全身金色的狼,高高的站在狼群后面的一快岩石上。它向革拉特望了一眼,然后头昂向天空发出一声长啸。啸声在狼群中激起一遍回应,狼群也跟着嚎叫起来。接着慢慢的向革拉特靠拢。 革拉特把刀横在胸前,然后举向天空,双腿往地上一蹬,嘴中发出一声咆哮。声音在旷野里传播开去。狼群也被怔得停住了前移的脚步。但是只是稍微迟疑了一下,又开始一边发出低沉的声音一边移动。革拉特缓缓闭上眼,一边用身体感受狼群的一举一动一边聚集力量。 狼群移动到到离革拉特2,3米多远的地方就停住了前进的脚步。都漏出白森森的牙齿,耸立着颈部的毛,不停地发出低沉的呜呜。。。” 革拉特却满脸镇定的神情,而且还透露出肃穆的感觉。 狼和人都等待着最后的时刻到来。。。。 萨德列顺着树枝的方向走着,一路上脑子里总想着那个奇怪的法师的事情,不知道怎么的自己对他特别的好奇。这么多年的经验告诉他在这个世界里好奇心有时会害死一个人。可他还是抑制不住。走着走着,他停了下来,因为直觉告诉他附近就有那个法师的信息。他走进路旁的一的小树林,在林子中间一副令他万分吃惊的景象出现在他面前。 旷野…. 狼群…. 人……一个坚定的人。 为首的那头金狼在岩石上转了几圈,然后停了下来。它用异样的眼神盯了盯前面的人。接着,又昂起头发出一声嚎叫。 战斗的号角已经吹响,战鼓也擂响。革拉特从听到狼王的嚎叫时刻,一直紧闭的双眼猛地撑开。手中的刀也开始抖动,发出“呜呜```````````”的鸣叫。 站在革拉特最前面的几头狼早就耐不住了,箭一般的向革拉特扑过来。 刀象天空的明月一样划出一道美丽的白光。 红色的血从半空中洒落下来。点点斑斑落在革拉特的脸上,身上。 革拉特吐出嘴里的血,象一头猛虎一样扑进狼群。从狼身上喷射出的血雨点般的打在他身上。热血的腥味刺激着他的神经,革拉特挥舞着手中的刀,自己已经分不清身上的血哪些是自己的哪些是狼的`````````` 在一望无尽的旷野上,一群狼和一个人构建了一幅罕见的奇观。狼的悲嚎,人的咆哮从旷野中央象涟漪一样散开。  革拉特已经开始气喘吁吁了,拼杀了一个多小时本来已经不多的体力已经快要透支了。而狼群却显得越来越多。革拉特周围,被杀死的狼都只剩下些骨头。这些狼为了自己把死了的或受伤的狼全吃了。革拉特身上也是伤痕累累。周围的狼不停地向他进攻。一次又一次地。前面的倒下了,后面的把尸体拖出去,又继续扑上来。 …呼…呼..不行了,我不行了。这些狼怎么都杀不完。我要放弃了。奇迹,奇迹我现在最需要的就是奇迹了。” “唰唰!”又是两刀,两头扑上来的狼被砍翻在地。突然背后钻心般的痛,革拉特急忙转过身,唰```一刀挥过去。却砍了个空,他仔细一看,原来是那头狼王。自己周围的其他狼都停止了向他进攻。只在他周围围出一个圈。狼王在他面前来回的走动。两只眼睛死死地盯着他。 “决斗吗??”革拉特心想。 周围的狼群不断地发出嚎叫,仿佛是在为狼王喝彩,加油。 革拉特明白了,狼王是要建立自己在狼群中的威信,要找他这个垂死的人来决斗。 革拉特把心一横。双手把刀握在手里,刀尖遥指狼王。他知道自己已经没有多少体力了,要和这只开始一直在旁观战的狡猾的狼王决斗,硬拼下去只有死。心里不断地想对策。 狼王在革拉特面前2,3米的地方来回的徘徊。两只眼睛却一刻也没离开过革拉特的一举一动。它在寻找空隙一直没有进攻。 一狼一人,在旷野中相互对峙着。周围狼群的嚎叫此起彼伏。突然革拉特向狼王冲了过去。就要冲到时,突然脚下一滑跌到在地上。狼王象绷紧的弹簧一样飞一般地射向革拉特。嘴准确地咬向革拉特的咽喉。 这个时候,狼群也全安静了下来,周围突然一下变得异常的安静。 血,从狼王的嘴边流了出来。。。。 周围的狼群发出胜利的嚎叫。 狼王一动也不动的趴在革拉特的身上,它的眼中充满了诧异的神情。 一狼一人都趴在地上半天一动不动,狼群也停止了嚎叫。一只灰狼从狼群中走出来。慢慢走近革拉特。突然,狼王从地上飞了出来。革拉特用刀艰难地站了起来。狼群一下子沸腾了。那只灰狼走到狼王的身边,嗅了嗅。然后回过身盯着革拉特。它走到革拉特身边,围着他转了几圈。然后向狼群发出一声长啸。本来围着革拉特的狼群开始散开。然后在灰狼的带领下向远方跑去。 狼群散尽。革拉特一下子倒在地上。看着身边狼王的尸体,回想起刚才的时刻,真是九死一生。他在狼王的牙齿快刺破自己颈部血管的一瞬间,把自己的左手塞进狼王的口中的同时右手把刀捅进狼王的心脏。现在手上几个血孔还在不住的冒血。他自己感到奇怪的是,现在自己居然没感到害怕,却有一种兴奋的感觉。 革拉特包扎了一下伤口,然后就躺在一快岩石后面睡了。

January 14, 2022 · 1 min · Luo Fei

建站记录(踩坑心得)  [draft]

在繁忙的工作中,断断续续、跌跌撞撞地自学R语言,翻资料,查英文。这一段历程对于一个大叔来说,作实有点辛苦,值得记录。还记得第一次正式接触和使用R还是2015年在上海工作期间。那时候也没有深入的了解和学习,只是基础的学习了平实在工作中可能会使用的基础功能。真正认真开始学习是2019年新冠疫情暴发之初,因为要处理大量数据、分析、绘图、建模,所以认真花费了一段时间来学习。在学习过程中参考了不少大牛的教材,书籍和参考资料等。尤其要感谢一辉。从rmarkdown、bookdown、blogdown、knit,为了那个文学编程,害我还学习了lantex、html、css、pandoc等,可谓是一把辛酸泪啊😭。关于这段历程,后面还是计划开个新章好好记录。这篇文章主要记录下,自己使用blogdown+ hugo + netlify, 踩坑心得 建站历程。 关于blogdown blogdown的具体功能这里不赘述了,希望了解的请参考一辉大神的blogdown,我这里只是记录自己的心得坑: 踩坑记录 自定义“代码高亮”无效(待解决) 根据hugopaper的教程设置发现下面代码有效,设置后代码无highlight。 params: assets: disableHLJS: true 下面这段代码无效,设置后无法显示,上传到netfily同样无效。 markup: highlight: # anchorLineNos: true codeFences: true guessSyntax: true lineNos: true # noClasses: false style: monokai 在highlightjs 网站下载相关的css样式后,将喜欢的样式名称改为an-old-hope.min后放在网站根目录/assets/css可以更改高亮样式,但是建议选择黑暗模式的样式。现在还未找到在网站白天/黑夜模式切换下。css下载地址 更改样式后,白色字体貌似是hugo-paper主题重新定义了的,无法根据样式更改。待解决 baseURL 如果根据教程提示将baseURL改为在netfily上提供的域名,在用自己的域名解析后,次级链接仍然会链接到原netfily域名上 解决方案: 在config.yaml设置如下 baseURL: /

January 12, 2022 · Luo Fei

重庆市公共卫生医师规范化培训-寄生虫病

介绍 受邀参与重庆市公共卫生执业医师规范化培训工作,主要负责了寄生虫病概况和疟疾防控两个内容的讲解和培训。为此特编写了教材《重庆市公共卫生医师规范化培训-寄生虫病》。这本教材主要包括: 第 1 章主要介绍了寄生虫的生物学知识。 第 2 章主要介绍了寄生虫病的防治。 第 3章主要介绍全国主要寄生虫病流行概况。 第 4章主要介绍重庆市主要寄生虫病流行概况。 第 5章主要介绍疟疾的流行与防控概况。 第 6章主要介绍疟疾的基础知识。 第 7章主要介绍重庆市疟疾防控策略和措施。 点击图片阅读

January 9, 2022 · 1 min · Luo Fei