【发布时间】:2012-03-14 17:18:58
【问题描述】:
看这个例子
这是在 matlab 中通过独立制作两个散点图创建的,每个创建图像,然后使用 imagesc 将它们绘制成同一个图形,最后将顶部图像的 alpha 设置为 0.5。
我想在 R 或 matlab 中执行此操作而不使用图像,因为创建图像不会保留轴比例信息,也不能覆盖网格(例如,在 matlab 中使用“grid on”)。理想情况下,我希望在 matlab 中正确执行此操作,但也会对 R 中的解决方案感到满意。这似乎应该是可能的,但我一生都无法弄清楚。
所以一般来说,我希望能够设置整个绘制对象的 alpha(即 matlab 用语中的 matlab 绘图句柄......)
谢谢,
本。
编辑:上例中的数据实际上是二维的。绘制的点来自计算机模拟。每个点代表“幅度”(y 轴)(特定于我正在运行的模拟的紧急属性),针对“性能”(x 轴)绘制。
编辑 2:每个数据集中有 1796400 个点。
【问题讨论】:
-
我没有一个很好的解决方案(在 ggplot 中),除了说虽然我确信你“必须”使用散点图是有原因的,但你可能应该只覆盖两个此处的密度估计,这使得使用 alpha 级别的解决方案变得非常简单。
-
为每个点创建一个变量以确定它位于哪个集合:A、B 或两者。使用它来选择颜色。
-
不是微不足道的,但是将来自两组六边形箱的信息组合起来怎么样?
-
一个蛮力解决方案是:(i)创建两个具有相同范围、轴等的单独图; (ii) 使用 grid.cap() 捕捉两者的栅格表示; (iii) 将栅格中的值转换为整数; (iv) 添加一个栅格加上另一个栅格的 10 倍; (v) 用适当的颜色名称替换结果栅格中的整数;然后 (vi) 用 grid.raster( , interpolate=FALSE) 绘制它。如果您想经常这样做,那么编写一个小函数来为您传递给它的任何一对绘图调用执行这些步骤可能是值得的。
-
我编辑了我的原始帖子以解释正在绘制的数据类型。我不相信生成 2D 密度估计,就像你可能建议 Joran 那样,真的会产生我希望做的事情,因为这会导致每个数据集有多个轮廓。我想我想要每个数据集周围有一个轮廓,以便保留每个数据集的一般形状;通过这种方式,我可以摆脱各个点,这将是很好的。今天是我第一次做任何 R - 花了我一段时间来搞清楚......
标签: r matlab plot ggplot2 plyr