我一直在尝试在对数-对数散点图上获得半透明的圆形标记。MATLAB自带的scatter绘图函数不会产生半透明标记(请参见下面的评论),因此我正在使用这个很棒的工具scatter_patches来解决问题,它来自于Central File Exchange,而且它运行得非常好:
然而,我在将该代码适应于对数-对数散点图时遇到了问题。为了使用这个程序获得对数-对数散点图,我需要解决两个问题:
1. 将坐标轴改为对数刻度。这可以通过在第61行后添加以下内容来实现:
这将生成正确的对数刻度和网格点。
2. 但是,在我修复1之后,我的图中标记的大小不均匀。在对数图上,轴的较低值区域被放大。在scatter_patches图中,轴下侧的标记较大,而它们朝着轴的较高值侧变小。因此,整个图上的标记大小并不相同。我尝试在第221-222行使用
如果有人知道我可能遗漏了什么,请分享。
非常感谢任何帮助。
然而,我在将该代码适应于对数-对数散点图时遇到了问题。为了使用这个程序获得对数-对数散点图,我需要解决两个问题:
1. 将坐标轴改为对数刻度。这可以通过在第61行后添加以下内容来实现:
set(cax, 'XScale', 'log');
set(cax, 'YScale', 'log');
这将生成正确的对数刻度和网格点。
2. 但是,在我修复1之后,我的图中标记的大小不均匀。在对数图上,轴的较低值区域被放大。在scatter_patches图中,轴下侧的标记较大,而它们朝着轴的较高值侧变小。因此,整个图上的标记大小并不相同。我尝试在第221-222行使用
log10(cSize)
代替cSize
,但这只减小了最大和最小标记大小之间的差异。它没有在图中产生相同大小的标记。如果有人知道我可能遗漏了什么,请分享。
非常感谢任何帮助。
set(hadle_to_scatterplot,'MarkerFaceColor','None')
吗?似乎scatter_patches
创建了一个圆圈而不是标记。 - Crowleyexp()
吗:set(patchObjects(i), 'XData', cSize * sin(patchSpec) / ptsPerXUnit + xs(i)); set(patchObjects(i), 'YData', cSize * cos(patchSpec) / ptsPerYUnit + ys(i));
像这样set(patchObjects(i), 'XData', cSize * exp(sin(patchSpec))/ ptsPerXUnit + xs(i));
但我没有尝试过! - obchardonset(patchObjects(i), 'XData', exp(cSize * sin(patchSpec)/ ptsPerXUnit + xs(i)));
,对于YData也是一样的。 - obchardon