让ChatGPT给你写代码????

原文链接:使用ChatGPT写代码靠谱吗?

写在前面

对于ChatGPT从我们“惊讶”到现在已经快一年多了,但是,对于个人来说,使用还是比较少的。更确切的来说,也许有些同学是没有使用过。

ChatGPT功能确实比较强大,但对于我们使用者来说,可能感觉自己使用时候并没有有直观的感受到他“所谓的强大”。对于个人来说,对于ChatGPT只是用来“搜索引擎”一样的功能。有时候,自己不会的内容,也会让它来搜索。

那么用ChatGPT来写绘图代码,或是分析代码可以吗??

对于个人来说只能说是:仁者见仁智者见智。

使用ChatGPT写一个热图绘制的ShinyApp

提问

这样的提问,也是参考了Chen CJ老师。其实,也可以不用设定他的人设,直接提问,给出的答案基本是一致的。

给出需求

给出我们自己提问的问题,以及要求。要求,尽可能详细。

ChatGPT给出回答

我们分别使用ChatGPT 3.5ChatGPT 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教程(替换数据即可出全部结果与图形)


4. 精美图形绘制教程

5. 转录组分析教程

转录组上游分析教程[零基础]

一个转录组上游分析流程 | Hisat2-Stringtie

小杜的生信筆記,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杜的生信筆記

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值