This might look a very silly question to many of you but please answer.

I am interested in generating a volcano plot for my dataset, which has four columns and all values are in log2. column 1 has name while column 2, 3, 4 has values in treated, untreated states and fold change.

DDR1    7.8519007358    8.0207450402    0.1688443044
RFC2    8.1756591822    7.7784602732    -0.397198909
HSPA6       7.8186806878    7.274639204 -0.5440414838
PAX8    8.0207450402    3.8519007358    -4.1688443044
CALR    7.7784602732    1.8519007358    -5.9265595374
MAPK1   4.8519007358    7.7784602732    2.9265595374
MAPK1   4.8819007358    7.2784602732    2.3965595374
KRAS    3.8519007358    7.8519007358    4

I am intrested in generating scatter plot from these values with marking outliers at 2 fold.

I am bit confused and puzzled with the command in R as it is asking more than one parameter like p-value and things which I do not have.


Kindly help me in generating this scatterplot with my dataset.

Solutions in python are also welcome.

Thank you for your time and consideration.


This field is new to me but it looks like this is not just a problem of producing a plot. You have a piece of analysis to do before you can present the results in your plot. A volcano plot appears to be simply a way of presenting the results of that analysis, which it sounds like you have not yet done.

The so-called p-values need to be generated by a test for each point that indicates how statistically unusual each of your points are. There is a discussion of how to do that on this site about microarray data analysis. There are various ways of doing this; you just need to choose one before you go to the next step of presenting your results in one of these plots.

I'm not familiar with the maDB R package that has the drawVolcanoPlot() function but I'd suggest a good read of the maDB documentation to get started on how to generate those p-values.

I say "so-called" p-values because this seems a slightly different approach to classical hypothesis testing. Normally statisticians do not approve of running hundreds of tests and comparing the p-values. However, this seems a standard approach in this field, and certainly gives some useful information. I would just caution that these p-values should nto be interpreted the same as p-values from classical hypothesis testing. Instead, they are an indicator of how surprising an individual point is (rather than of the probability of getting observed data given a null hypothesis, to be interpreted in terms of whether that hypothesis should be rejected).

  • $\begingroup$ With microarrays and other small n large p problems, the p-values for many tests are computed and ordered. This is a filtering device for eliminating some variables from consideration and is not taken seriously because of the high multiplicity of testing. $\endgroup$ – Michael Chernick Jun 11 '12 at 1:15
  • $\begingroup$ Michael can you please add some context? It may be unclear to some how this is related to this question. $\endgroup$ – Macro Jun 11 '12 at 1:21
  • $\begingroup$ @Macro Sorry. Peter Ellis points to "so-called p-values" because p-values are computed for each biomarker. The ordering of the p-values keeping biomarkers for further consideration from those with the lowest p-values is a common first stage method to filter out the biomarkers that have no effect. But the p-values ar eonly used as a screening device and not to be taken literally about how significant the marker id. $\endgroup$ – Michael Chernick Jun 11 '12 at 1:38
  • $\begingroup$ Yes, I think this is what I was trying to say too. Nothing wrong with these as giving some information on the particular points of data, but they shouldn't be interpreted the way p-values are in a hypothesis testing context. $\endgroup$ – Peter Ellis Jun 11 '12 at 2:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.