(资料图片仅供参考)

最近在使用ggplot2画图时,发现如果将坐标轴设置为无冗余量(expand=c(0,0)),即图框与坐标起始截止一致,在预览和导出的图像都会出现坐标轴起始和截止刻度略视觉错位的情况,这种情况并不是RStudio导致的,因为用自带的和绘制出的图仍然如此(图1,图2所示),这种错位在使用封闭的panel时(即四边均框住数据点)尤为明显。但是,python的matplotlib画图并导出(无论是spyder还是jupyterlab),则不会出现这种情况。

(注:R语言的图区分为plot,对应Excel绘图的图表区,plot的框线即为框住整个图像的外框线,和panel,对应Excel绘图的绘图区,即两个坐标轴构成的矩形区域)

而这种错位实际不是真正错位,而是在R语言成图时,刻度线定位的起始点是坐标轴的起/终点,再加上刻度线的宽度,造成了这种视觉错位的情况。为尽量解决这种错位,摸索了以下几种方法:

1. 导出矢量图后放入矢量图编辑软件(如CorelDraw、Adobe Illustrator等)手动调整,好处是完美主义者无需纠结R中的图像,只需要后期逐个修改。缺点就是如果绘制了大量图像,再加上万一后续对绘制的图片进行数据的改动(指增加或删减拟合线等图形元素,篡改数据是不对的哟~),那么也需要重新修改坐标轴,工程量会很大。

2. 不使用这种绘图风格,转为默认有冗余量的坐标轴,或者选择非封闭的panel(非封闭的图框视觉上的错位感会少一些),例如theme_classic(),亦或者将刻度线转为全部向内(也会降低这种错位感,但仍然存在,如图3所示)

3.通过少量放缩坐标轴起止,将这种视觉错位抹平),好处是极大降低了视觉上的错位(图4),但缺点也很明显:我个人猜测是R语言底层的缘故,导致需要协调调整横纵坐标的起止才可以达成起止刻度与坐标轴起止重合这一目的,也就是说,当调整完终点重合后,已调整为重合的起点可能会再次略微不重合。因此,需要不断多次调整坐标轴起止值并导出图片放大查看。

图4中的x轴起始为-,这一值与x轴总范围()并无任何比例关系。首次调整为-时便视觉无错位,但在调整完x轴截止的刻度线无错位后,起始刻度线再次不重合,因此不断调整坐标轴放缩的值才达到了刻度线与坐标轴和panel的重合。对y轴同理。以下是调整后的代码:

关键词: