## Prepare example data

    library(airway)
    library(DESeq2)
    library(org.Hs.eg.db)
    library(AnnotationDbi)

    data("airway")

    counts_mat <- assay(airway)
    airway <- airway[rowSums(counts_mat) > 1, ]

    dds <- DESeqDataSet(airway, design = ~ cell + dex)
    dds <- DESeq(dds)
    res <- results(dds, contrast = c("dex", "trt", "untrt"))

    df <- as.data.frame(res)
    df$gene_id <- rownames(df)
    df$symbol <- mapIds(org.Hs.eg.db,
                        keys = df$gene_id,
                        column = "SYMBOL",
                        keytype = "ENSEMBL",
                        multiVals = "first")

    df <- df[!is.na(df$symbol), ]
    df <- df[, c("log2FoldChange", "padj", "symbol")]

    head(df)

                    log2FoldChange         padj symbol
    ENSG00000000003    -0.38125398 1.281209e-03 TSPAN6
    ENSG00000000419     0.20681260 1.962081e-01   DPM1
    ENSG00000000457     0.03792043 9.111955e-01  SCYL3
    ENSG00000000460    -0.08816818 8.946325e-01  FIRRM
    ENSG00000000938    -1.37822703           NA    FGR
    ENSG00000000971     0.42640213 1.818075e-05    CFH

## Interactive volcano plot

    library(ivolcano)

    ivolcano(df,
            logFC_col = "log2FoldChange",
            pval_col = "padj",
            gene_col = "symbol",
            top_n = 5,
            onclick_fun=onclick_genecards)

We can use the fanyi package to query NCBI gene description and translated to local language to be displayed on the plot, see also https://yulab-smu.top/ivolcano/.