linux下不能画图的问题解决

在Linux环境中遇到R语言无法画图的问题,主要是由于缺少PNG设备支持。通过安装Cairo包并配置相关依赖,可以解决这个问题。首先安装Cairo包,然后检查R的图形支持,确认已支持Cairo生成图片。最后,使用Cairo系列函数如CairoPNG进行绘图,确保图形正确生成。若遇到png包安装失败,需要安装libpng-devel并通过R重新安装png包。
摘要由CSDN通过智能技术生成

【报错】:
> hist(clf2$school)
[rsession-enn_james] ERROR r error 4 (R code execution error) [errormsg=Error in .External2(C_X11, paste("png::", filename, sep = ""), g$width,  :
  无法打开PNG设备
]; OCCURRED AT: core::Error r::exec::evaluateString(const std::string&, SEXPREC**, r::sexp::Protect*) /root/rstudio/src/cpp/r/RExec.cpp:271; LOGGED FROM: DevDesc* r::session::graphics::handler::shadow::<unnamed>::shadowDevDesc(DevDesc*) /root/rstudio/src/cpp/r/session/graphics/RShadowPngGraphicsHandler.cpp:141
Error in RStudioGD() :
  Shadow graphics device error: r error 4 (R code execution error)
此外: Warning message:
In grDevices:::png("/tmp/RtmpNwBswU/36f8ee1bfb64447a9d4cb058599b7cff.png",  :
  无法打开链结到X11显示''
而且输入capabilities函数可以看到不支持png,jpeg这些画图
> capabilities()
       jpeg         png        tiff       tcltk         X11        aqua    http/ftp     sockets      libxml        fifo      cledit
      FALSE       FALSE       FALSE       FALSE       FALSE       FALSE        TRUE        TRUE        TRUE        TRUE        TRUE
      iconv         NLS     profmem       cairo         ICU long.double     libcurl
       TRUE        TRUE       FALSE       FALSE       FALSE        TRUE       FALSE

【解决办法】:不使用X11生成,使用 图形渲染库Cairo。

【步骤1】:安装Cairo包
install.packages("Cairo")

【步骤2】:加载Cairo后,查看支持
    
> library(Cairo)
> Cairo.capabilities()
   png   jpeg   tiff    pdf    svg     ps    x11    win raster
  TRUE  FALSE  FALSE   TRUE   TRUE   TRUE   TRUE  FALSE   TRUE
说明已经支持用cairo生成图片了

Cairo使用起来非常简单,和基础包grDevices中的函数对应。
CairoPNG: 对应grDevices:png()
CairoJPEG: 对应grDevices:jpeg()
CairoTIFF: 对应grDevices:tiff()
CairoSVG: 对应grDevices:svg()
CairoPDF: 对应grDevices:pdf()


【步骤3】:生成图片
>CairoPNG(file="out.png",width=800,height=480)
> hist(clf2$school)
> getwd()
[1] "/home/enn_james"
在当前目录下可以看到生成了图片

在Rstudio窗口下的右下侧的Files里面,找到刚生成的png文件,点击打开即可看到新生成的图片。

在PyCharm中使用matplotlib绘制中文图表时遇到乱码问题,通常是因为字体缺失或者编码设置不正确导致的。解决步骤如下: 1. **安装支持中文的字体**: 首先,确保你的系统中有支持中文的字体包,如SimHei、SimSun等。如果没有,可以下载并在Python环境中添加。例如,在Windows上,可以在`C:\Windows\Fonts`目录下查找,然后将字体文件复制到Python的`site-packages/matplotlib/mpl-data/fonts/ttf/`目录。 2. **修改Matplotlib配置**: 打开matplotlib的配置文件`matplotlibrc`,通常位于`~/.matplotlib/matplotlibrc`(Linux/Mac用户)或`%USERPROFILE%\.matplotlib\matplotlibrc`(Windows用户)。在文件中找到`text.usetex`和`text.latex.preamble`行,将其注释掉,因为它们可能导致中文显示问题。然后添加`font.sans-serif = SimHei, SimSun, FangSong, Microsoft YaHei, sans-serif`这一行,指定默认的中文字体。 ``` # 在合适的位置添加或修改以下内容: font.sans-serif : SimHei, SimSun, FangSong, Microsoft YaHei, sans-serif ``` 3. **检查编码设置**: 确保你的Python脚本和数据文件都使用UTF-8或其他支持中文字符的编码格式。如果是在读取文件时出错,记得在打开文件时指定正确的编码,如`open('file.txt', 'r', encoding='utf-8')`。 4. **运行代码并查看结果**: 保存并关闭配置文件后,重启Python或PyCharm,再尝试绘制中文图表看是否解决了乱码问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值