小贴士:创建彩色日历

信息世界|2019年1月11日,

用R语言制作一个彩色日历,看看你能在多大程度上实现每天的目标

版权©2019Raybet2

嗨。我是IDG通信的Sharon Machlis,这里是“用R做更多”:彩色日历。
查看你是否达到每日目标的最好方法之一就是一个简单的日历,用不同颜色的方块标记。你是否满足了每日的业务指标,比如销售或社交媒体帖子?或者,你的个人目标如何,比如每天锻炼?
R可以帮助。让我们看看一个记录日常锻炼的日历。更具体地说,不管你是做有氧运动、力量训练还是休息。
首先你需要获得数据,然后才能将其可视化。对于简单的数据输入,我通常使用电子表格,Excel或谷歌表格。我知道,我知道,有一点异端邪说来自于R的狂热者。但我喜欢使用一个优化的工具来完成这项工作。
下面是如何建立一个Excel文件用于日常锻炼。
一天的一列,活动的一列。我不想做的是自由形式的输入文本到活动列。我可能会记得力量训练的确切形式是“力量训练”而不是“重量”。但我想确认一下。因此,我将在活动列中添加数据验证。
我在另一个选项卡中设置了一列可接受的选项。我做了有氧运动和力量训练。接下来,我将选择想要限制数据输入的单元格—在本例中是整个活动行,头部除外。
然后我将在Excel数据带中选择数据验证并选择一个列表
最后,我将单击Source字段内部,然后转到我的possible activities选项卡,选择我的两个选项,然后点击OK。现在我的电子表格设置正确了。如果我想添加另一个条目,我有两个选择:
最后是休息时间。
要制作一个简单的彩色日历,我将使用ggplot2库和Jay Jacobs的ggcal包。Ggcal在GitHub上。您可以在这里看到安装包的代码。我也会加载dplyr,因为我几乎总是用dplyr,不管我在做什么;readxl读取电子表格;和lubridate一起工作。
让我们导入文件并查看一下。日期的第一列是POSIX。ggcal函数需要日期对象。因此,我将把Day列改为date对象。
这是更好。
我这个月只有几天时间。如果我想打印整个月的日历,我需要填写当前月的其余日期。这就是这段代码的其余部分所做的。
max(daily_exercise$Day)获取文件中的最后一个日期。
as.Date(减少())代码发现的第一天月最后一天的文件,将对任何日期1月1日——1月集日期类,然后添加1个月结果是任何日期1月。2月1日不过,我不想要2月1日。我想要早一天。减去1(也就是1天)然后是月底。
接下来,我想计算所有的日期,从我的数据中最早的日期开始,到我们刚刚计算的月末为止。我可以使用基本R的日期排序命令,创建一个1天的序列。我要把它放到一个新的数据框里,里面有一列。
为什么我要做一个1列的数据框架而不是一个向量?因为现在我可以使用dplyr left_join来合并两个数据帧。左联接意味着将所有内容保留在左数据帧中,或将第一个数据帧与第二个数据帧合并到一个公共列中。我将在白天运行合并。现在我的数据已经为ggcal准备好了。
ggcal函数的语法是日期作为第一个参数,值作为第二个参数。值可以是类别,就像我们现在使用的,或者是数字,如果你想要一个日历热点地图。我将运行这个 你会得到带有默认颜色的默认日历。
如果希望设置自己的配色方案,可以使用常用的ggplot2函数。在这里,我使用scale_fill_manual()并添加了一个图例名称、每个类别的颜色值以及NA值的浅灰色。最后的主题行为传奇添加了一个标题。
我有另一个工作表,除了分类,还包括分钟,所以你可以看到一个日历热图。让我们的过程。在新工作表中读取的第一个代码块,创建一个新的数据帧,每个月的所有天数,并使用默认颜色运行ggcal几分钟。
我宁愿用最深的颜色代表最高的数,而不是最低的数。如果你知道如何自定义ggplot2,你可以轻松地调整你的日历。在这最后一段代码中,我使用RColorBrewer的scale_fill_distiller函数来使用颜色生成器调色板来处理连续的数值数据;在这种情况下,从黄色到橙色再到红色。还有,日历有了新的配色方案。
这一集就到这里,感谢收看!想了解更多关于R的小技巧,你可以登录https go . infoworld . com网站上的“用R做更多”页面,除了R,其他字母都是小写的。你也可以在YouTube上找到“用R做更多”的播放列表。希望下一集再见!
受欢迎的
IDG.tv的特色视频