看教程不够直观,那就看视频吧! >>点击加载视频
今天有个同学问R语言画图的问题。
现在有个图片是png格式的,图像如下:
一个很简单的直方图。
在R输出图片时,采用的是png()函数,由于png图片是非矢量图,因此要指定像素。这个图片默认的像素是2000×1200。
问题是如何将这个图片转为svg 格式的。
如果直接用svg()转换,图像会变成这样的:
也就是显示不完整,因为svg()是矢量图,没有像素的概念,只有英寸。
因此需要根据公式进行英寸和像素的转化。
方法1:
设x为png 中x轴像素个数,y为y轴像素的个数。设总像素为T。
x*y=T
设svg中 x轴长度为a ,y轴为b。(本图中比例为5:3)
设变量p为ppi,像素密度。
p*(a*b)=T
设h为基础单位,那么
p*(5h*3h)=x*y
h=√(x*y)/15
a=5*√(x*y)/15
b=3*√(x*y)/15
通过对上面图的计算,可以得知
a=400/√p *5
b=400/√p*3
但是这样还是有一个问题。这个p 不是很容易计算,这个可以通过计算图像面积得到。
方法2:
其实方法1 更多的是从理解的角度,方法2 是更加简单粗暴的。
可以利用画图软件将png 打开,转换为英尺,看看x 和y 的大小,然后修改pdf 的,然后就可以啦。
祝好运。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!