原文链接:使用ChatGPT写代码靠谱吗?
写在前面
对于ChatGPT从我们“惊讶”
到现在已经快一年多了,但是,对于个人来说,使用还是比较少的。更确切的来说,也许有些同学是没有使用过。
ChatGPT功能确实比较强大,但对于我们使用者来说,可能感觉自己使用时候并没有有直观的感受到他“所谓的强大”。对于个人来说,对于ChatGPT只是用来“搜索引擎”
一样的功能。有时候,自己不会的内容,也会让它来搜索。
那么用ChatGPT来写绘图代码,或是分析代码可以吗??
对于个人来说只能说是:仁者见仁智者见智。
使用ChatGPT写一个热图绘制的ShinyApp
提问
这样的提问,也是参考了Chen CJ老师
。其实,也可以不用设定他的人设,直接提问,给出的答案基本是一致的。
给出需求
给出我们自己提问的问题,以及要求。要求,尽可能详细。
ChatGPT给出回答
我们分别使用ChatGPT 3.5
和ChatGPT 4.0
进行提问,给出的答案基本一致。
ChatGPT 3.5
回答代码
# 安装所需包
if (!require("shiny")) {
install.packages("shiny")
}
if (!require("ggplot2")) {
install.packages("ggplot2")
}
if (!require("pheatmap")) {
install.packages("pheatmap")
}
library(shiny)
library(ggplot2)
library(pheatmap)
# 创建一个简单的UI界面
ui <- fluidPage(
titlePanel("Interactive Heatmap"),
sidebarLayout(
sidebarPanel(
fileInput("file", "Choose a file"),
selectInput("color_palette", "Select color palette", choices = c("viridis", "RdBu", "Blues")),
selectInput("scale", "Choose data scaling method", choices = c("none", "row", "column", "both")),
selectInput("output_format", "Choose output format", choices = c("pdf", "jpg", "png")),
actionButton("draw_heatmap", "Draw Heatmap")
),
mainPanel(
plotOutput("heatmap_plot")
)
)
)
# 创建服务器端逻辑
server <- function(input, output) {
data <- reactive({
req(input$file)
read.csv(input$file$datapath)
})
output$heatmap_plot <- renderPlot({
req(input$draw_heatmap)
pheatmap(data(), color = input$color_palette, scale = input$scale, filename = paste0("heatmap.", input$output_format))
})
}
# 启动应用
shinyApp(ui = ui, server = server)
ChatGPT 4.0
回答代码
packages <- c("shiny", "ggplot2", "heatmaply", "shinyWidgets", "colourpicker", "shinyjs")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
install.packages(setdiff(packages, rownames(installed.packages())))
}
library(shiny)
library(ggplot2)
library(heatmaply)
library(shinyWidgets)
library(colourpicker)
library(shinyjs)
# 定义 UI
ui <- fluidPage(
# 添加所需的UI组件
titlePanel("Interactive Heatmap"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Please choose a CSV file',
accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')),
tags$hr(),
checkboxInput('header', 'Header', TRUE),
radioButtons('sep', 'Separator', c(Comma=',', Semicolon=';', Tab='\t'), ','),
radioButtons('quote', 'Quote', c(None='', "Double Quote"='"', "Single Quote"="'"), '"'),
colourInput("col","Heatmap Color", value = "red"),
pickerInput("norm", "Normalization Method", choices = c("None", "Z-score", "Min-Max")),
checkboxInput("cluster", "Cluster", FALSE),
checkboxInput("sig", "Significance", FALSE),
pickerInput("out", "Output Format", choices = c("PNG", "JPEG", "PDF")),
actionButton("plotButton","Plot")
),
mainPanel(
plotlyOutput("heatmap")
)
)
)
# 定义服务器逻辑
server <- function(input, output) {
data <- reactive({
file1 <- input$file1
if(is.null(file1)){return()}
read.csv(file=file1$datapath, sep=input$sep, header = input$header, stringsAsFactors = FALSE)
})
observeEvent(input$plotButton, {
output$heatmap <- renderPlotly({
if(input$norm == "Z-score"){
data_norm <- scale(data())
} else if(input$norm == "Min-Max"){
data_norm <- (data() - min(data())) / (max(data()) - min(data()))
} else {
data_norm <- data()
}
heatmaply(data_norm, colors = colorRampPalette(input$col), k_row = ifelse(input$cluster, NA, 1), k_col = ifelse(input$cluster, NA, 1), labRow = ifelse(input$sig, rownames(data()), NULL))
})
})
}
# 运行应用
shinyApp(ui = ui, server = server)
代码运行后结果
给出的交互网页,也是一个比较简易的。使用好几个要求并没有写上去,也许是我们的提问不科学,未能识别。
结束
ChatGPT固然方便,但是,给出的答案还是需要我们自己来甄别。目前的ChatGPT还算可以,简单的代码可以正常运行,比刚开始时候提高了一些。但是,始终我们只能作为一个参考。
若我们的分享对你有用,希望您可以点赞+收藏+转发,这是对小杜最大的支持。
往期文章:
1. 复现SCI文章系列专栏
2. 《生信知识库订阅须知》,同步更新,易于搜索与管理。
3. 最全WGCNA教程(替换数据即可出全部结果与图形)
-
WGCNA分析 | 全流程分析代码 | 代码一
-
WGCNA分析 | 全流程分析代码 | 代码二
-
WGCNA分析 | 全流程代码分享 | 代码三
-
WGCNA分析 | 全流程分析代码 | 代码四
-
WGCNA分析 | 全流程分析代码 | 代码五(最新版本)
4. 精美图形绘制教程
- 精美图形绘制教程
5. 转录组分析教程
转录组上游分析教程[零基础]
一个转录组上游分析流程 | Hisat2-Stringtie
小杜的生信筆記,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!