小编Gee*_*cid的帖子

热图中x轴上的对角线标注方向

在R中创建热图已成为许多帖子,讨论和迭代的主题.我的主要问题是将格子levelplot()或基本图形中可用解决方案的视觉灵活性image()与基本heatmap(),pheatmap pheatmap()或gplots'的轻松聚类结合起来很棘手heatmap.2().这是我想要改变的一个小细节 - x轴上标签的对角线方向.让我告诉你我在代码中的观点.

#example data
d <- matrix(rnorm(25), 5, 5)
colnames(d) = paste("bip", 1:5, sep = "")
rownames(d) = paste("blob", 1:5, sep = "")
Run Code Online (Sandbox Code Playgroud)

您可以使用levelplot()以下方法轻松更改方向到对​​角

require(lattice)
levelplot(d, scale=list(x=list(rot=45)))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但应用聚类似乎很痛苦.其他视觉选项也是如此,例如在热图单元格周围添加边框.

现在,转移到实际的heatmap()相关功能,聚类和所有基本视觉效果都非常简单 - 几乎不需要调整:

heatmap(d)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所以在这里:

require(gplots)
heatmap.2(d, key=F)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

最后,我最喜欢的一个:

require(pheatmap)
pheatmap(d) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但所有这些都无法旋转标签.手册pheatmap建议我可以使用grid.text自定义标签.真是太高兴 - 尤其是在聚类和更改显示标签的顺序时.除非我在这里遗漏了什么......

最后,还有一件旧货image().我可以旋转标签,一般来说它是最可定制的解决方案,但没有聚类选项.

image(1:nrow(d),1:ncol(d), d, axes=F, ylab="", xlab="")
text(1:ncol(d), 0, srt = 45, labels = rownames(d), xpd …
Run Code Online (Sandbox Code Playgroud)

label r data-visualization heatmap lattice

26
推荐指数
5
解决办法
3万
查看次数

R包用于运动捕捉数据分析和可视化

我是R的新手,喜欢它,但我很惊讶完全缺乏分析动作捕捉数据的可靠包.

最简单的动作捕捉文件只是一个巨大的表格,每个点都附有一个"XYZ"坐标,并且对于每个捕获的帧都是如此.我知道我可以在R中找到单独的方法和函数来执行复杂的操作(如主成分分析),或者我可以绘制所有点的时间序列.但是,当我正在寻找可以在统计上教育我分析人类运动的例子,并提供用于数据视觉表示的漂亮工具箱时,R原来是一个寒冷的沙漠.另一方面,MATLAB具有运动捕捉工具箱MoCap工具箱,尤其是后者具有很好的绘制和分析捕获的选项.但是说实话 - 与R相比,MATLAB的可视化引擎相当丑陋.

对R动作捕捉包的一些具体要求包括:

  • 读取,编辑,可视化和转换mocap数据
  • 动力学和运动学分析
  • 时间序列和主成分分析
  • 动画数据

我在这里遗漏了什么(在我的谷歌搜索中)或者R里面真的没有mocap包吗?有没有人试过在R中玩动作捕捉数据?你能给我一些指示吗?

matlab r data-visualization

24
推荐指数
1
解决办法
2359
查看次数

ggplot2中的迷你图

Tufte Sparklines(如他的美丽证据所示)已作为YaleToolkit的一部分在基础图形中复制,并由于这个问题而进一步完善.迷彩线也在格子中完成,作为我的小方案项目Tufte in R的一部分(自我推销并非预期).我现在的目标是在ggplot2中复制Tufte 迷你图.有一些脚本在Gist上浮动,也作为对SO的这个问题的回复,但没有一个为制作可复制的迷你图集提供了坚实的基础.

现在,我希望那些多个迷你图看起来像这样(它是在基本图形中完成的,代码在这里可用) - 点代表最大/最小值,右端的数字是特定时间序列和灰色带的最终值显示粗略的分位数范围:

在此输入图像描述

我不是很远,但我坚持最小/最大值和标签的分配:

library(ggplot2)
library(ggthemes)
library(dplyr)
library(reshape)
library(RCurl)
dd <- read.csv(text =
  getURL("https://gist.githubusercontent.com/GeekOnAcid/da022affd36310c96cd4/raw/9c2ac2b033979fcf14a8d9b2e3e390a4bcc6f0e3/us_nr_of_crimes_1960_2014.csv"))
d <- melt(dd, id="Year")
names(d) <- c("Year","Crime.Type","Crime.Rate")
dd <- group_by(d, Crime.Type) %>% 
  mutate(color = (min(Crime.Rate) == Crime.Rate | max(Crime.Rate) == Crime.Rate))
ggplot(dd, aes(x=Year, y=Crime.Rate)) + 
  facet_grid(Crime.Type ~ ., scales = "free_y") + 
  geom_line(size=0.3) + geom_point(aes(color = color)) + 
  scale_color_manual(values = …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2 tufte

20
推荐指数
1
解决办法
2879
查看次数

避免在`textscan`中为大表中的每一列键入转换说明符

我正在使用表格读取数据textscan().该表有90列,我想将每列的值作为浮点数读取.看看文档,我必须使用说明符%f- 但似乎我需要使用它90次,所以我最终得到这个:

c = textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f
                  %f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f
                  %f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f
                  %f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f');
Run Code Online (Sandbox Code Playgroud)

这基本上有用,但我想知道是否有一些方法可以避免为我的表中的每一列输入说明符.

file-io matlab textscan

9
推荐指数
1
解决办法
4381
查看次数

填充区域以匹配晶格中各种"类型"参数的线

我知道我可以使用panel.xyarealatticeExtra用任何颜色填充图中的区域.如果没有定义type参数xyplot,这样的填充将遵循默认路径type="p":

library(lattice)
library(latticeExtra)
data <- data.frame(time=1:24,value=rnorm(24))
xyplot(value~time, data, 
       panel=function(x,y,...){
             panel.xyarea(x,y,...)
             panel.xyplot(x,y,...)}) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这两个地块panel.xyarea和点从默认的未来type="p"panel.xyplot.现在当我想要更改type绘图线时出现问题,例如使其成为阶梯函数type="S":

xyplot(value~time, data, type="S",
       panel=function(x,y,...){
             panel.xyarea(x,y,...)
             panel.xyplot(x,y,...)}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如您在上面的示例中看到的panel.xyarea那样,未填充新步长函数下方的区域,而是将两个区域重叠.如果我移动type="S"到它,它不会改变任何东西panel.xyarea- 实际上它根本没有注册type参数,而是因为它不会存在.

有没有办法可以绕过这个并panel.xyarea填写我的图表,无论我定义的是什么类型 - 是步骤函数(type="S"),黄土(type="smooth")还是回归(type="r")?或者也许有比panel.xyarea在这种情况下使用更好的东西?

plot r panel area lattice

9
推荐指数
1
解决办法
631
查看次数

ggplot2 geom_rug()产生不同的线长和宽图

我发布了这个跟随格子的'兄弟'问题(即莱迪思的`panel.rug`产生不同的线长和宽图),但由于不同的图形系统,它应该是分开的.

在ggplot2中生成包含geom_rug()from的边距的宽图时,ggthemesy轴中的线条长度比x轴长:

library(ggplot2)
library(ggthemes)
png(width=800, height=400)
ggplot(swiss, aes(Education, Fertility)) + geom_point() + geom_rug()
dev.off()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想在x轴和y轴上的那些地毯线是相同的长度,而不管绘图的形状如何(注意:现在,当绘图是正方形时,地毯线只会是相同的长度).

r data-visualization ggplot2

8
推荐指数
2
解决办法
1580
查看次数

如何用两种颜色填充图上的单个"pch"点?

如果您使用下面的代码,如何更改第三颗钻石的填充物,那么它将是半黑色,半白色?该解决方案应适用于任何颜色.

data <- c(1,2,3)
plot(data, pch=c(23,18,23), cex=c(2.5,3,2.5))
Run Code Online (Sandbox Code Playgroud)

plot r pch

7
推荐指数
1
解决办法
2550
查看次数

绘制时间序列热图时提高 ggplotly 的性能

我正在使用 Plotly 和 Shiny在 R 中构建一个交互式时间序列热图。作为此过程的一部分,我将热图值从连续格式重新编码为有序格式 - 所以我有一个热图,其中六种颜色代表特定的计数类别,而这些类别是根据聚合计数值创建的。但是,这会导致使用ggplotly(). 我已经将它追溯到tooltip()Plotly 中呈现交互框的函数。即使我只是向tooltip(). 我正在使用来自约翰霍普金斯 CSSE 存储库. 这是一个简化的热图代码,它也使用辛普森一家的颜色主题ggsci

#Load packages
library(shiny)
library(plotly)
library(tidyverse)
library(RCurl)
library(ggsci)

#Read example data from Gist
confirmed <- read_csv("https://gist.githubusercontent.com/GeekOnAcid/5638e37c688c257b1c381a15e3fb531a/raw/80ba9704417c61298ca6919343505725b8b162a5/covid_selected_europe_subset.csv")

#Wrap ggplot of time-series heatmap in ggplotly, call "tooltip"  
ggplot_ts_heatmap <- confirmed %>%
  ggplot(aes(as.factor(date), reorder(`Country/Region`,`cases count`), 
             fill=cnt.cat, label = `cases count`, label2 = as.factor(date), 
             text = paste("country:", `Country/Region`))) + 
  geom_tile(col=1) +
  theme_bw(base_line_size = 0, base_rect_size = …
Run Code Online (Sandbox Code Playgroud)

r heatmap ggplot2 shiny ggplotly

7
推荐指数
1
解决办法
926
查看次数

为每个图例标签显示两个符号

使用pch我可以绘制任何符号并在图例中指定任何标签.但是如何为每个图例标签绘制两个符号?例如,在下面的图中,我想要■▲●与红色版本配对,所以我只有三个标签'a','b','c'显示在图例中,这六个符号.目前,基本的情节图例似乎只允许我为每个标签绘制一个符号:

plot(rnorm(50),pch=c(15:17),col=1:2)
legend('topleft',pch=c(15:17),col=1:2,legend=c("a","b","c"),cex=1.5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

plot symbols r data-visualization legend

6
推荐指数
2
解决办法
4247
查看次数

在dotplot中绘制错误条线的垂直结尾

我正在dotplot()使用latticeDotplot()使用Hmisc.当我使用默认参数时,我可以绘制没有小垂直结束的误差条

--O -

但我想得到

| --O - |

我知道我能得到

| --O - |

当我使用centipede.plot()plotrixsegplot()latticeExtra,但这些解决方案并没有给我这么好的调理选项Dotplot().我试图用玩par.settingsplot.line,这对于改变错误条线的颜色,宽度等效果很好,但到目前为止,我一直在增加垂直的结局是不成功的:

require(Hmisc)
mean = c(1:5)
lo = mean-0.2
up = mean+0.2
d = data.frame (name = c("a","b","c","d","e"), mean, lo, up)
Dotplot(name ~ Cbind(mean,lo,up),data=d,ylab="",xlab="",col=1,cex=1,
        par.settings = list(plot.line=list(col=1),
                       layout.heights=list(bottom.padding=20,top.padding=20)))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请不要给我使用ggplot2的解决方案......

plot r lattice

5
推荐指数
1
解决办法
1824
查看次数