我们如何用ChatGPT进行代码学习和debug

频道:行业资讯 日期: 浏览:627

本期运用cursor解决生信基本技能学习过程中出现的问题。cursor是一款基于ChatGPT4的代码编辑器,正确运用能够大幅缩短学习周期。

以下记录了问题解决的过程,文章中包含的代码源于《R语言实战》第三章中的案例。

问题一:绘图时背景色显示失败

install.packages("RColorBrewer") library(RColorBrewer) n <- 7 mycolors1 <- brewer.pal(n, "Set1") barplot(rep(1,n), col=mycolors) #条形图 plot(dose, drugA, type="o", main="病人对两种药物五个剂量水平上的响应情况", lty=4,pch=11,cex=1,lwd=1,col=mycolors1,col.axis="red",col.lab="blue",col.main="purple" ,bg="black")

•输出结果中无法显示黑色背景

我们如何用ChatGPT进行代码学习和debug

解决方案

•直接用par()函数,即可输出黑背景,par()函数对代码中所有图形均有效

par(bg="black") plot(dose, drugA, type="o", main="病人对两种药物五个剂量水平上的响应情况", lty=4, pch=11,cex=1,lwd=1,col=mycolors1,col.axis="red",col.lab="blue",col.main="purple")

•输出结果如下

我们如何用ChatGPT进行代码学习和debug

延伸问题

1.打开新页面时,背景色不显示

dev.new() #打开新页面 plot(dose, drugA, type="o", main="病人对两种药物五个剂量水平上的响应情况", lty=4, pch=11,cex=1,lwd=1, col=mycolors1,col.axis="red", col.lab="blue",col.main="purple",bg="black")

我们如何用ChatGPT进行代码学习和debug

•原因:bg参数对于plot函数无效,plot显示区域背景为黑色可能是因为之前通过par设置了背景为黑色,与询问后得到的回答一致

我们如何用ChatGPT进行代码学习和debug

解决方案补充

•可以用ggplot2解决背景色问题,但其他参数需要进一步设置

我们如何用ChatGPT进行代码学习和debug

•这里提供的是修改图片本身颜色而非背景色,修改背景色代码和相应输出结果如下(黑色不明显,改了蓝色)我们如何用ChatGPT进行代码学习和debug

问题二:PDF保存时出现乱码

•代码同问题一,结果如下

我们如何用ChatGPT进行代码学习和debug

•询问后,结果提示标题字体没有安装

我们如何用ChatGPT进行代码学习和debug

解决方案 思路一:解决字体问题,保存为PDF

•安装字体并保存为PDF,Rstudio中图片得到改善但PDF仍有问题

windowsFonts(myfont=windowsFont("SimHei")) plot(dose, drugA, type="o", main="病人对两种药物五个剂量水平上的响应情况",lty=4, pch=11,cex=1,lwd=1, col=mycolors1,col.axis="red",col.lab="blue",col.main="purple") par(bg="black")

我们如何用ChatGPT进行代码学习和debug

我们如何用ChatGPT进行代码学习和debug

•继续询问

我们如何用ChatGPT进行代码学习和debug

•尝试extrafont包,但是报错了

•将报错内容直接询问,得到同样答案,放弃该思路

我们如何用ChatGPT进行代码学习和debug

思路二:改变输出为PDF的代码,让字体成功显示

•以下是cursor提供的代码,提示使用Cairo包保存

library(Cairo) CairoPDF("plot.png", width = 6, height = 6, dpi = 300, type = "cairo") plot(x, y, main = "你好世界") dev.off()

我们如何用ChatGPT进行代码学习和debug

•尝试后报错,针对报错语句继续询问

我们如何用ChatGPT进行代码学习和debug

我们如何用ChatGPT进行代码学习和debug

•提示直接删除语句,操作后仍不成功

我们如何用ChatGPT进行代码学习和debug

•最后在plot()函数中加上family参数,问题解决

我们如何用ChatGPT进行代码学习和debug

思路三 安装字体,export保存为图片

•结果没问题

我们如何用ChatGPT进行代码学习和debug

来自师姐的补充 问题一:

其实这是一个值得注意的好问题,我们?plot()一下,就会发现 在绘制散点图时,plot函数里面的参数bg用法同points函数,不同于par函数,如图:

我们如何用ChatGPT进行代码学习和debug

points函数里的bg参数是这样解释的:

我们如何用ChatGPT进行代码学习和debug

而par函数里的bg参数是这样:

我们如何用ChatGPT进行代码学习和debug

师妹这个代码的pch是11,如果调整为21(即圆点),再用bg=“black”,就会发现那些点里是黑色填充的(草图附在下面)

总结来说,不同的函数又有不同的参数,虽然熟练了之后很多都见过了,但是想要全部记住是很困难的,学习新的R包的时候也会遇到没有见过的参数,这时候千万不要忘记去help里看一下,耐心读一下这些英文的注释,可能会很有帮助,也会提供一些思路~

cursor的功能虽然很强大,但是可能首先需要我们精准的提出问题,通过郭师妹的尝试我们也看到了,它解读代码的能力是很强的,也会给出很多思路,不过不一定能精确地解决问题;

我想也许下次我们在使用的时候,首先人工摸索一番,再拆解出最关键的那步进行提问,可能能最大化的利用这个AI的功能

问题二:

可以看出来郭师妹是很认真的在尝试解决问题的~cursor提供的回答也确实提供了一些思路,不过可能不能完全依赖它。

其实会出现这个点点点主要是因为在保存PDF时,中文字体会出现乱码。

如果把标题变为英文就不会有这个问题,而一般我们做的图也基本都是英文;但如果想要保存为中文标题的话,可以考虑安装Cairo包,用CairoPDF()函数保存,并在plot函数里使用family参数定义一个中文字体,例如“GB1”就是宋体,这样就可以保存了

正如师兄说的,发现问题解决问题是一种能力,基于问题的学习是很重要的;

有时候学习十几行代码是很容易的,但是蹦出来的一个报错却需要花上成倍的时间去解决,可是解决报错的时候,我们也极大的锻炼了提出问题的能力,检索答案的能力,等等。

正所谓不打不相识,其实在和error过招的时候,也恰恰是我们培养和R语言默契的过程呀~

祝师弟师妹享受解决报错的过程(狗头)

以下就是解决保存PDF时中文字体会出现乱码的方法:

library(Cairo) CairoPDF("myplot1.pdf") #重新起一个pdf文件名字 myplot <- plot(dose,drugA,type="o",main = "病人对两种药物五个剂量水平上的响应情况", family="GB1", #宋体 lty = 4, pch = 11, cex= 1, lwd= 1,col=mycolors1, col.axis="red",col.lab = "black",col.main = "black",bg = "black") dev.off()

SCI母语润色

专注生物医学领域

唯 问 生 物

专注肿瘤基础研究

19901610324同微信

0 留言

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码