Question: clusterProfiler: exclude pathways and add gene names to cnetplot
gravatar for Mr.RB
6 months ago by
Mr.RB10 wrote:

Package: clusterProfiler by Guangchuang Yu

Let start with the example code (just the same as from the vignette):


# basic analysis
data(geneList, package="DOSE")
kegg <- gseKEGG(geneList = geneList, organism = 'hsa')

# plotting
cnetplot(kegg, categorySize="pvalue", foldChange=geneList)

I want to change two things in this cnetplot

  1. Exclude pathways in the graph
  2. Providing gene names instead of the IDs


1. Using the example:

head(kegg@result) %>% select(Description, setSize)

                               Description setSize
hsa04510                    Focal adhesion     188
hsa00982 Drug metabolism - cytochrome P450      49
hsa03050                        Proteasome      42
hsa03030                   DNA replication      33
hsa05340          Primary immunodeficiency      34
hsa04151        PI3K-Akt signaling pathway     320

Let's say I do not want the genes for the Focal adhesion in the cnet graph, how can this be accomplished.

2. using the example

Instead of the ids (such as 6891) I want to show the gene names which I provide myself (or maybe this can be done automatically)




ADD COMMENTlink modified 6 months ago by Guangchuang Yu1.1k • written 6 months ago by Mr.RB10
gravatar for Guangchuang Yu
6 months ago by
Guangchuang Yu1.1k
China/Guangzhou/Southern Medical University
Guangchuang Yu1.1k wrote:

1. same question posted on​.

please upgrade enrichplot to v >= 1.0.1, and then you can pass selected Pathway Names (selected from the Description column) to showCategory parameter.


2. you can use DOSE::setReadable to translate gene ID to gene symbol.





ADD COMMENTlink modified 6 months ago • written 6 months ago by Guangchuang Yu1.1k

Dear Guangchuang Yu,

Regarding question 1:

The version I currently have is  enrichplot_1.1.1.001  , which is >=1.0.1 as recommended by you. However when I pass a vector of pathway names to the cnetplot command ( like so x <- cnetplot(kegg, showCategory = kegg$Description[-2]) ) it will give this error:

Error in 1:n : NA/NaN argument
In addition: Warning messages:
1: In 1:n : numerical expression has 38 elements: only the first used
2: In V(g)$size[1:n] <- size : NAs introduced by coercion

Can't figure out what I'm doing wrong here.

Regarding question 2:

After re-reading this question I think I wasn't that clear with what I mean. I love that function, however what I meant is that I could pass this to cnetplot. Of course I could convert the ids to the gene names before calling the gseKEGG function, but this will probably interfere with mapping. Therefore, I want to be able to pass the gene names to cnetplot

ADD REPLYlink modified 6 months ago • written 6 months ago by Mr.RB10
  1. pls use enrichplot v >= 1.0.2 or v >= 1.1.2, which address the issue you reported.

  2. you misunderstand how setReadable works.

## run gseKEGG as usual

kk <- gseKEGG()

## convert gene ID to symbol

kk2 <- setReadable(kk) # refer to man for additional parameters

## plot

ADD REPLYlink written 6 months ago by Guangchuang Yu1.1k

1. Thankyou! that version seems to work fine

2. The setReadable will of course only work whenever a db is available for the species in question, this is not the case for me. Therefore I mentioned gene names which I provide myself in my question I looked at the code of and thought I could easily mimic the setReadable function like so:

kegg@gene2Symbol <- as.character(
kegg@keytype <- 'auto'
kegg@result <- kegg@result
kegg@readable <- TRUE

However this will still only show the ids (and loses coloring in the network), instead the names I provided in the, is there any way to provide these manually?

ADD REPLYlink modified 6 months ago • written 6 months ago by Mr.RB10
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.2.0
Traffic: 349 users visited in the last hour