做实验报告时想把两组传感器数据画成散点,用plot硬画出来全是折线,怎么看怎么别扭。换成scatter(x, y)一下就对了。散点图和折线图最大的区别就在这:一个画点,一个连线。
三个最基本的参数
scatter(x, y)只给坐标,点大小和颜色都用默认值。scatter(x, y, sz)里的sz是每个点的面积,单位是平方磅,注意是面积不是直径,写100出来的是直径约10磅的圆。scatter(x, y, sz, c)里的c控制颜色,可以给单个颜色名如r,也可以给和x等长的向量做渐变色。
把点设成实心不描边
默认的散点带黑色描边,点一多就糊成一团黑。加参数filled:scatter(x, y, 40, 'b', 'filled'),点就变成纯蓝实心。想换标记形状用第五个参数,o是圆、s是方块、^是三角、d是菱形。要和折线叠加,前面加hold on。
scatter(x, y, 30, 'r', 'filled'); hold on; scatter(x2, y2, 30, 'b', 'filled');颜色映射的两种用法
给c传一个和点数相同的向量,再配合colormap(jet),就能做出气压、温度那种渐变色散点,右边加colorbar看刻度。传三列的RGB矩阵也行,每行一个颜色。导出矢量图时点太多文件会很大,如果只为看趋势,把点数降采样到几千以内。
和 plot 的区别别搞混
scatter返回的是Scatter对象,属性用点访问,比如h = scatter(...)之后改h.MarkerFaceAlpha = 0.7调透明度。plot返回的是Line对象,两者句柄类型不同,设置属性的写法也不通用。要画三维散点用scatter3,多给一个z参数。要带误差棒,别自己拼线段,直接用errorbar。
- 点重叠严重:降低sz并设MarkerFaceAlpha为0.5左右。
- 图例缺失:每个scatter后加displayName,再调legend。
- 要导出论文图:用exportgraphics存PDF或300dpi的PNG。