Unconfigured Ad

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Marcos Lancia
    Member
    • Apr 2015
    • 31

    #1

    Scatterplot of 2 columns

    Hi everybody. I have a simple question for bioinformatics. I´d like make a scatterplot of 2 of my columns from a table .csv or .tabular. How can I do that? Thanks!
  • Marcos Lancia
    Member
    • Apr 2015
    • 31

    #2
    Oh, I'm sorry. I'm working on R. Thanks!

    Comment

    • blancha
      Senior Member
      • May 2013
      • 367

      #3
      Code:
      library(data.table)
      
      # Read data with fread.
      # You could also use read.table or read.csv, but fread has many advantages.
      data <- data.table::fread("test.csv")
      
      # Basic scatter plot.
      plot(data$V1, data$V2)
      
      library(ggplot2)
      
      # A slightly different scatter plot with ggplot2
      # Very easy to generate prettier plots with ggplot2. 
      # Takes time to understand underlying concepts though.
      ggplot2::qplot(data$V1, data$V2)

      Comment

      • dpryan
        Devon Ryan
        • Jul 2011
        • 3478

        #4
        Code:
        d <- read.csv("some_file.csv", header=T) #Presuming there's a header
        plot(d[,1], d[,2]) # or plot(d$FirstColumnLabel, d$SecondColumnLabel)
        Edit: I guess I should have refreshed, Blancha beat me to it.

        Comment

        • blancha
          Senior Member
          • May 2013
          • 367

          #5
          @dpryan
          That's fine.
          Your answer does raise a good point for a novice R user.

          @Marcos Lancia If your csv file does have column headers, you should use those instead of V1 and V2, which are the default column headers generated by fread.
          There are several other subtleties, even for this question, which is just about the most basic question one can ask in R.
          That's why I've stopped trying to teach R to wet-lab biologists.
          I like fread, because it is extremely fast, and can detect several other features of the files, such as the column separator, or the presence or absence of column headers, which often have to be explicitly specified with read.csv.
          However, fread returns a data.table by default, not a data.frame, which is a slightly different data structure.
          If you'd like to get a more traditional data.frame, you just have to specify data.table = FALSE.
          Code:
           fread("test.csv", data.table=FALSE)
          With a data.table, you can't specify the column index in exactly the format given by @dpryan. You can specify the column by the column label in the same manner, though.
          To get the first column by index of a data.table, you need to use the following format.

          Code:
          data[, 1, with=FALSE]
          Hopefully, you're not now completely lost.
          You'll understand why I've stopped given workshops in R. D)

          @dpryan's answer is more direct. read.csv() and plot()

          Comment

          • Marcos Lancia
            Member
            • Apr 2015
            • 31

            #6
            Hi people, thanks for writing. I'll check it out your ideas, I'll see how well I understand your commands.

            Comment

            • Marcos Lancia
              Member
              • Apr 2015
              • 31

              #7
              I´m working with dpryan's commands. I could make variable d, but when I tried plotting

              plot(d$log2(FC transcriptome), d$log2(FC translatome))

              but there's an error message saying
              Error: unexpected symbol in "plot(d$log2(FC transcriptome"

              What can I do?
              Thanks!

              Comment

              • Marcos Lancia
                Member
                • Apr 2015
                • 31

                #8
                little advances

                "log2(FC transcriptome)", and "log2(FC translatome)" are my headers that I want to plot. They´re the 10th and 24th columns in my table.

                Comment

                • blancha
                  Senior Member
                  • May 2013
                  • 367

                  #9
                  Yes, that's not going to work.

                  You can't have space in a R variable name.
                  As always, there is a work-around.
                  You can put the variable names in back ticks: `FC transcriptome`is acceptable.
                  You need to call log2 on the column too.
                  log2(d$`FC transcriptome`)

                  The function read.csv must have replaced the blank spaces by periods anyway.

                  So, the correct code would be.

                  Code:
                   plot(log2(d$FC.transcriptome), log2(d$FC.translatome))
                  You should check the head of the data frame, to be sure that you have the correct column names, and that the file was read correctly.

                  Code:
                  head(d)
                  colnames(d)
                  EDIT for update
                  If the colunm name in your file is log2(FC transcriptome), read.csv will convert the column name to log2.FC.transcriptome.
                  Just check the colnames and the header of the data frame with the commands posted above.
                  Last edited by blancha; 10-16-2015, 06:27 AM.

                  Comment

                  • Marcos Lancia
                    Member
                    • Apr 2015
                    • 31

                    #10
                    I tried the same with ggplot, and the answer was the same.

                    Comment

                    • blancha
                      Senior Member
                      • May 2013
                      • 367

                      #11
                      Just want to point out that with RStudio you can import a file by just clicking on "Import Dataset", and also just view the data frame by clicking on the name of the data frame.

                      Highly recommend RStudio for both novices and power users.

                      Edit for update
                      Just post the output of the following command, so that we know the format of your data frame.
                      Code:
                      head(d)

                      Comment

                      • blancha
                        Senior Member
                        • May 2013
                        • 367

                        #12
                        Or, since you said that it is the 10th and 24th columns, you could just specify the columns by the index number.

                        Code:
                        plot(d[,10], d[,24])
                        One should always check the format of the data frame first after reading a CSV file, though.

                        Comment

                        • Marcos Lancia
                          Member
                          • Apr 2015
                          • 31

                          #13
                          Ok! you're right. I changed the names of the headers, but I crashed with a new problem. I have some non-numerical data in the columns, some are "inf" or "-inf". How can I avoid that?

                          Comment

                          • Marcos Lancia
                            Member
                            • Apr 2015
                            • 31

                            #14
                            I tried before with plot(d[,10], d[,24]), but it says "error in evaluating the argument 'x' in selecting a method for function 'plot': Error in `[.data.frame`(d, , 10) : undefined columns selected"

                            > head(d)
                            test_id.gene_id.gene.locus.sample_1.sample_2.status.value_1.value_2.log2.FC.transcriptome..test_stat.p_value.q_value.significant.test_id.gene_id.gene.locus.sample_1.sample_2.status.value_1.value_2.log2.FC.translatome..test_stat.p_value.q_value.significant
                            1 TCONS_00000001\tXLOC_000001\tMedtr1g004940\tchr1:688-7366\tSN16 mock\tSN16 Sm\tNOTEST\t0\t0\t0\t0\t1\t1\tno\tTCONS_00000001\tXLOC_000001\tMedtr1g004940\tchr1:688-7366\tTRAP mock\tTRAP Sm\tNOTEST\t0\t0\t0\t0\t1\t1\tno
                            2 TCONS_00000002\tXLOC_000002\tMedtr1g004950\tchr1:14513-15729\tSN16 mock\tSN16 Sm\tNOTEST\t0\t0\t0\t0\t1\t1\tno\tTCONS_00000002\tXLOC_000002\tMedtr1g004950\tchr1:14513-15729\tTRAP mock\tTRAP Sm\tNOTEST\t0\t0\t0\t0\t1\t1\tno
                            3 TCONS_00000003\tXLOC_000003\tMedtr1g004960\tchr1:16282-18382\tSN16 mock\tSN16 Sm\tNOTEST\t0\t0\t0\t0\t1\t1\tno\tTCONS_00000003\tXLOC_000003\tMedtr1g004960\tchr1:16282-18382\tTRAP mock\tTRAP Sm\tNOTEST\t0\t0\t0\t0\t1\t1\tno
                            4 TCONS_00000004\tXLOC_000004\tMedtr1g004980\tchr1:31972-32344\tSN16 mock\tSN16 Sm\tNOTEST\t0\t0\t0\t0\t1\t1\tno\tTCONS_00000004\tXLOC_000004\tMedtr1g004980\tchr1:31972-32344\tTRAP mock\tTRAP Sm\tNOTEST\t0\t0\t0\t0\t1\t1\tno
                            5 TCONS_00000005\tXLOC_000005\tMedtr1g004990\tchr1:35909-40554\tSN16 mock\tSN16 Sm\tNOTEST\t0
                            6 203657\t0

                            Comment

                            • blancha
                              Senior Member
                              • May 2013
                              • 367

                              #15
                              The default line separator for read.csv is the comma.
                              If your file is tab-delimited, it will not separate the columns by tab.

                              Choice #1: Use read.csv, and specify the separator. Not my favorite solution, but most commonly used.
                              Code:
                              d <- read.csv("test.csv", sep="\t")
                              Choice #2: Much better in my opinion. Install dtable, and use the fread function.
                              fread automatically picks up the column separator
                              Code:
                              install.packages("data.table")
                              library(data.table) 
                              d <- fread("test.csv", data.table=FALSE)
                              Choice #3
                              Use the Import Dataset button in RStudio.
                              Specify the column separator in pop-up menu.
                              Quick solution for R novices.

                              Comment

                              Latest Articles

                              Collapse

                              • SEQadmin2
                                Beyond CRISPR/Cas9: Understand, Choose, and Use the Right Genome Editing Tool
                                by SEQadmin2



                                CRISPR/Cas9 sparked the gene editing revolution for both research and therapeutics.1 But this system still showed severe issues that limited its applications. The most prominent were the heavy reliance on PAM sequences, delivery limitations, double-stranded breaks that prompt unintended edits and cell death, and editing inefficiency (both in targeting and in knock-in reliability).

                                Despite this, “CRISPR helped turn genome editing from a specialized technique into
                                ...
                                07-31-2026, 11:01 AM
                              • SEQadmin2
                                Proteomic Platforms: How to Choose the Right Analytical Strategy to Improve Detection and Clinical Applications
                                by SEQadmin2


                                Proteomics platforms are evolving rapidly, with advances in mass spectrometry and affinity-based approaches expanding what researchers can detect and at what scale. As the field moves toward deeper proteome coverage and clinical applications, scientists face an increasingly complex landscape of tools. This article will explore how researchers are navigating these choices to find the right platform for their work.

                                The systematic characterization of the human proteome has
                                ...
                                07-20-2026, 11:48 AM

                              ad_right_rmr

                              Collapse

                              News

                              Collapse

                              Topics Statistics Last Post
                              Started by SEQadmin2, Yesterday, 12:22 PM
                              0 responses
                              12 views
                              0 reactions
                              Last Post SEQadmin2  
                              Started by SEQadmin2, 08-11-2026, 10:35 AM
                              0 responses
                              14 views
                              0 reactions
                              Last Post SEQadmin2  
                              Started by SEQadmin2, 08-06-2026, 07:41 AM
                              0 responses
                              31 views
                              0 reactions
                              Last Post SEQadmin2  
                              Started by SEQadmin2, 08-03-2026, 10:13 AM
                              0 responses
                              50 views
                              0 reactions
                              Last Post SEQadmin2  
                              Working...