草庐IT

关于 r:索引值的热图样式可视化

codeneng 2023-03-28 原文

Heat map style visualize of index values

我想用一个色标来可视化/绘制数据,代表 GIC.Fish 和 GIC 中的值。按 Dive.Number 缩放列。这有点像相关矩阵或热图,除了 Fish 和 Zoop 值彼此不相关,而是与潜水次数相关。以下数据是数据帧"temp"。

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
Dive.Number GIC.Fish GIC.Zoop
 [1,]           1     0.83     0.37
 [2,]           2     0.88     0.41
 [3,]           3     0.98     0.57
 [4,]           4     0.90     0.43
 [5,]           5     1.00     0.58
 [6,]           6     0.92     0.44
 [7,]           7     0.71     0.33
 [8,]           8     0.99     0.55
 [9,]           9     0.94     0.47
[10,]          10     0.95     0.48
[11,]          11     0.91     0.44
[12,]          12     0.96     0.50
[13,]          13     0.86     0.39
[14,]          14     0.94     0.47
[15,]          15     0.91     0.43
[16,]          16     0.89     0.41
[17,]          17     0.92     0.45
[18,]          18     0.94     0.47
[19,]          19     1.00     0.59
[20,]          20     0.96     0.53
[21,]          21     0.96     0.52
[22,]          22     1.00     0.68
[23,]          23     0.99     0.73
[24,]          24     0.98     0.77
[25,]          25     0.96     0.80
[26,]          26     0.83     0.98
[27,]          27     0.72     1.00
[28,]          28     0.98     0.77
[29,]          29     0.44     0.73
[30,]          30     0.29     0.44
[31,]          31     0.31     0.48
[32,]          32     0.64     0.97
[33,]          33     0.08     0.04
[34,]          34     0.09     0.05
[35,]          35     0.61     0.96
[36,]          36     0.36     0.59

这段代码让我有点接近,但只有一列相关数据。

1
2
3
4
    p<-ggplot(temp, aes(x=GIC.Fish, y=Dive.Number, fill=GIC.Fish))+
    geom_tile() +
    scale_fill_gradient2(midpoint=.5, low="blue", high="red") +
    guides(fill=FALSE)

这让我更接近了,但我不想要 Dive Number 列,也不想在单元格中显示实际值,我希望能够更改颜色栏中的颜色。

1
2
3
4
5
6
setInternet2(TRUE)
con = gzcon(url('http://www.systematicportfolio.com/sit.gz', 'rb'))
    source(con)
close(con)
as.matrix(temp)
plot.table(temp, highlight=TRUE, colorbar=TRUE)

  • 你能试着描述一下这个情节会是什么样子吗?每个轴上有什么,颜色代表什么?
  • 我希望鱼和 Zoop 值的 x 轴(几乎像两列或框架)和 y 轴是潜水数。颜色用于表示 Fish and Zoop 中的值,范围从蓝色(值为零)到红色(值 1)。这有帮助吗?


这是你所追求的吗?假设您的数据是 dat:

1
2
3
4
5
6
7
8
dat$Dive.Number <- factor(dat$Dive.Number)
library(reshape2)
dat.m <- melt(dat, variable.name ="GIC.type", value.name ="GIC")

p <- ggplot(dat.m, aes(GIC, Dive.Number)) + geom_point(aes(colour = GIC)) +
  scale_colour_gradient(low ="blue", high ="red") +
  facet_wrap(~GIC.type)
p

编辑

根据您的评论,也许这更像您的想象:

1
2
p <- ggplot(dat.m, aes(GIC.type, Dive.Number)) + geom_tile(aes(fill = GIC)) +
  scale_fill_gradient(low ="blue", high ="red")

  • 它很接近,但我希望它更紧凑,以便值包含在单个列中,而不是跨越值的分布。因此,它实际上看起来更像是一个带有彩色单元格的表格。
  • 那么您如何知道 GIC.Fish 中的内容和 GIC.Zoop 中的内容?
  • 是的,这看起来很棒。明天我会把它应用到完整的数据集上,看看效果如何。感谢您的回归,如果我的描述非常清楚,我们很抱歉。
  • 刚刚通过我的数据运行了这个。看起来很犀利!


(警告。不是 ggplot2 创作。我从来没有学会用那个模型思考。)我想你可能正在寻找一个可以用颜色编码的二维密度地图,所以我绘制了 GIC.Zoop 和 GIC.Fish。从该结果生成密度图的概念似乎不符合数据的模式,因此我画了线以查看是否存在明显的序列。然后我用 Dive.Number 标记点,用颜色编码:

1
2
3
4
5
 plot(GIC.Fish ~ GIC.Zoop, data=dat, ylim=c(0,1.1) )
 with(dat,  lines(GIC.Fish ~ GIC.Zoop) )
 with(dat, text(GIC.Zoop, GIC.Fish+.05, labels=Dive.Number ,
           col= colorRampPalette( c("#FFFFD4","#FED98E","#FE9929",
             "#D95F0E","#993404"), space ="Lab")(36)[Dive.Number]) )

您可以尝试颜色过渡。此颜色矢量提供更多对比度:

1
 c("#00FFD4","#00D98E","#880088","#D900ff","#993404")

有关关于 r:索引值的热图样式可视化的更多相关文章

  1. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

  2. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  3. ruby - Ruby 中的波形可视化 - 2

    我即将开始一个将录制和编辑音频文件的项目,我正在寻找一个好的库(最好是Ruby,但会考虑Java或.NET以外的任何库)以进行实时可视化波形。有人知道我应该从哪里开始搜索吗? 最佳答案 要流入浏览器的数据量很大。Flash或Flex图表可能是唯一能提高内存效率的解决方案。Javascript图表往往会因大型数据集而崩溃。 关于ruby-Ruby中的波形可视化,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

  4. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  5. ruby-on-rails - 协会的 Rails 索引 - 2

    我发现自己需要这个。假设cart是一个包含用户列表的模型。defindex_of_itemcart.users.each_with_indexdo|u,i|ifu==current_userreturniendend获取此类关联索引的更简单方法是什么? 最佳答案 indexArray上的方法与您的index_of_item方法相同,例如cart.users.index(current_user)返回数组中第一个对象的索引==给obj。如果未找到匹配项,则返回nil。 关于ruby-on-

  6. ruby - Rails -- :id attribute? 所需的数据库索引 - 2

    因此,当我遵循MichaelHartl的RubyonRails教程时,我注意到在用户表中,我们为:email属性添加了一个唯一索引,以提高find的效率方法,因此它不会逐行搜索。到目前为止,我们一直在根据情况使用find_by_email和find_by_id进行搜索。然而,我们从未为:id属性设置索引。:id是否自动索引,因为它在默认情况下是唯一的并且本质上是顺序的?或者情况并非如此,我应该为:id搜索添加索引吗? 最佳答案 大多数数据库(包括sqlite,这是RoR中的默认数据库)会自动索引主键,对于RailsMigration

  7. ruby-on-rails - 关于 Ruby 的一般问题 - 2

    我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia

  8. ruby-on-rails - Sunspot:如何对具有不同值的多个字段进行全文查询? - 2

    我想用sunspot重现以下原始solr查询q=exact_term_text:fooORterm_textv:foo*ORalternate_text:bar*但我无法通过标准的太阳黑子界面理解这是否可能以及如何实现,因为看起来:fulltext方法似乎不接受多个文本/搜索字段参数我不知道将什么参数作为第一个参数传递给fulltext,就好像我通过了"foo"或"bar"结果不匹配如果我传递一个空参数,我得到一个q=*:*范围过滤器(例如with(:term).starting_with('foo*')(顾名思义)作为过滤器查询应用,因此不参与评分。似乎可以手动编写字符串(或者可能使

  9. ruby - 引用具有指定索引的枚举器值 - 2

    假设我有一个可枚举对象enum,现在我想获取第三个项目。我知道一种通用方法是转换成数组,然后使用索引访问,如:enum.to_a[2]但这种方式会创建一个临时数组,效率可能很低。现在我使用:enum.each_with_index{|v,i|breakvifi==2}但这非常丑陋和多余。执行此操作最有效的方法是什么? 最佳答案 你可以使用take剥离前三个元素,然后剥离last从take给你的数组中获取第三个元素:third=enum.take(3).last如果您根本不想生成任何数组,那么也许:#Ifenumisn'tanEnum

  10. ruby - 将 Logstash 中的时间戳时区转换为输出索引名称 - 2

    在我的场景中,Logstash收到的系统日志行的“时间戳”是UTC,我们在Elasticsearch输出中使用事件“时间戳”:output{elasticsearch{embedded=>falsehost=>localhostport=>9200protocol=>httpcluster=>'elasticsearch'index=>"syslog-%{+YYYY.MM.dd}"}}我的问题是,在UTC午夜,Logstash在外时区(GMT-4=>America/Montreal)结束前将日志发送到不同的索引,并且索引在20小时(晚上8点)之后没有日志,因为“时间戳”是UTC。我们已

随机推荐