PieGlyph - labels do not show
1
0
Entering edit mode
Sim, Fraser ▴ 350
@sim-fraser-2871
Last seen 9.6 years ago
Hi Robert, I'm working with RGraphViz to plot PieGlyphs and wanted to try and add labels to the pie slices. The Usage page describes such a use. If I tried the following but no labels appear: library(Rgraphviz) plot(1:10, col="white") pieGlyph(1:2, 5, 5, labels = c("A","B") ) **************************************** Also when I look at the function itself, it does look like it uses 'labels' at all. function (x, xpos, ypos, labels = names(x), edges = 200, radius = 0.8, density = NULL, angle = 45, col = NULL, border = NULL, lty = NULL, main = NULL, ...) { if (!is.numeric(x) || anyis.na(x) | x <= 0)) stop("pie: `x' values must be positive.") if (is.null(labels)) labels <- as.character(1:length(x)) x <- c(0, cumsum(x)/sum(x)) dx <- diff(x) nx <- length(dx) if (is.null(col)) col <- if (is.null(density)) c("lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk", "white") else par("fg") col <- rep(col, length.out = nx) border <- rep(border, length.out = nx) lty <- rep(lty, length.out = nx) angle <- rep(angle, length.out = nx) density <- rep(density, length.out = nx) for (i in 1:nx) { n <- max(2, floor(edges * dx[i])) t2p <- 2 * pi * seq(x[i], x[i + 1], length = n) xc <- c(cos(t2p), 0) * radius + xpos yc <- c(sin(t2p), 0) * radius + ypos polygon(xc, yc, density = density[i], angle = angle[i], border = border[i], col = col[i], lty = lty[i]) } invisible(NULL) } <environment: namespace:rgraphviz=""> ****************************************** Here's my sessionInfo. R version 2.8.1 (2008-12-22) i386-pc-mingw32 locale: LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 attached base packages: [1] grid stats graphics grDevices datasets utils tools [8] methods base other attached packages: [1] org.Hs.eg.db_2.2.6 bioDist_1.14.0 gplots_2.6.0 [4] gdata_2.4.2 gtools_2.5.0 limma_2.16.4 [7] RColorBrewer_1.0-2 hgu133plus2.db_2.2.5 RSQLite_0.7-1 [10] DBI_0.2-4 AnnotationDbi_1.4.2 Rgraphviz_1.21.7 [13] graph_1.20.0 Biobase_2.2.1 rcom_2.0-4 [16] rscproxy_1.0-12 loaded via a namespace (and not attached): [1] annotate_1.20.1 Category_2.8.2 cluster_1.11.12 genefilter_1.22.0 [5] GSEABase_1.4.0 KEGGgraph_0.8.15 RBGL_1.18.0 ROC_1.16.0 [9] splines_2.8.1 survival_2.34-1 XML_1.99-0 Thanks, Fraser
hgu133plus2 Rgraphviz hgu133plus2 Rgraphviz • 1.2k views
ADD COMMENT
0
Entering edit mode
Sim, Fraser ▴ 350
@sim-fraser-2871
Last seen 9.6 years ago
I fixed the problem by referring to pie function and editing pieGlyphs accordingly. It's designed to draw lines +10% of the radius out for each label, and place the labels +20% from the center. It seems to works ok. Can we somehow add this to Rgraphviz? Fraser Here's my code: pieGlyph_new = function (x, xpos, ypos, labels = names(x), edges = 200, radius = 0.8, density = NULL, angle = 45, col = NULL, border = NULL, lty = NULL, main = NULL, ...) { if (!is.numeric(x) || anyis.na(x) | x <= 0)) stop("pie: `x' values must be positive.") if (is.null(labels)) labels <- as.character(1:length(x)) x <- c(0, cumsum(x)/sum(x)) dx <- diff(x) nx <- length(dx) if (is.null(col)) col <- if (is.null(density)) c("lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk", "white") else par("fg") col <- rep(col, length.out = nx) border <- rep(border, length.out = nx) lty <- rep(lty, length.out = nx) angle <- rep(angle, length.out = nx) density <- rep(density, length.out = nx) for (i in 1:nx) { n <- max(2, floor(edges * dx[i])) t2p <- 2 * pi * seq(x[i], x[i + 1], length = n) xc <- c(cos(t2p), 0) * radius + xpos yc <- c(sin(t2p), 0) * radius + ypos polygon(xc, yc, density = density[i], angle = angle[i], border = border[i], col = col[i], lty = lty[i]) # new code here t2p <- 2 * pi * mean(x[i + 0:1]) xc <- cos(t2p) * radius * c(1,1.1,1.2) + xpos yc <- sin(t2p) * radius * c(1,1.1,1.2) + ypos lab <- as.character(labels[i]) if (!is.na(lab) && nzchar(lab)) { lines(xc[1:2], yc[1:2]) text(xc[3], yc[3], labels[i], xpd = TRUE, adj = ifelse(xc < xpos, 1, ifelse(xc == xpos, 0.5, 0)),...) } # end new code } invisible(NULL) } -----Original Message----- From: bioconductor-bounces@stat.math.ethz.ch [mailto:bioconductor-bounces at stat.math.ethz.ch] On Behalf Of Sim, Fraser Sent: Thursday, April 16, 2009 4:09 PM To: bioconductor at stat.math.ethz.ch Subject: [BioC] PieGlyph - labels do not show Hi Robert, I'm working with RGraphViz to plot PieGlyphs and wanted to try and add labels to the pie slices. The Usage page describes such a use. If I tried the following but no labels appear: library(Rgraphviz) plot(1:10, col="white") pieGlyph(1:2, 5, 5, labels = c("A","B") ) **************************************** Also when I look at the function itself, it does look like it uses 'labels' at all. function (x, xpos, ypos, labels = names(x), edges = 200, radius = 0.8, density = NULL, angle = 45, col = NULL, border = NULL, lty = NULL, main = NULL, ...) { if (!is.numeric(x) || anyis.na(x) | x <= 0)) stop("pie: `x' values must be positive.") if (is.null(labels)) labels <- as.character(1:length(x)) x <- c(0, cumsum(x)/sum(x)) dx <- diff(x) nx <- length(dx) if (is.null(col)) col <- if (is.null(density)) c("lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk", "white") else par("fg") col <- rep(col, length.out = nx) border <- rep(border, length.out = nx) lty <- rep(lty, length.out = nx) angle <- rep(angle, length.out = nx) density <- rep(density, length.out = nx) for (i in 1:nx) { n <- max(2, floor(edges * dx[i])) t2p <- 2 * pi * seq(x[i], x[i + 1], length = n) xc <- c(cos(t2p), 0) * radius + xpos yc <- c(sin(t2p), 0) * radius + ypos polygon(xc, yc, density = density[i], angle = angle[i], border = border[i], col = col[i], lty = lty[i]) } invisible(NULL) } <environment: namespace:rgraphviz=""> ****************************************** Here's my sessionInfo. R version 2.8.1 (2008-12-22) i386-pc-mingw32 locale: LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 attached base packages: [1] grid stats graphics grDevices datasets utils tools [8] methods base other attached packages: [1] org.Hs.eg.db_2.2.6 bioDist_1.14.0 gplots_2.6.0 [4] gdata_2.4.2 gtools_2.5.0 limma_2.16.4 [7] RColorBrewer_1.0-2 hgu133plus2.db_2.2.5 RSQLite_0.7-1 [10] DBI_0.2-4 AnnotationDbi_1.4.2 Rgraphviz_1.21.7 [13] graph_1.20.0 Biobase_2.2.1 rcom_2.0-4 [16] rscproxy_1.0-12 loaded via a namespace (and not attached): [1] annotate_1.20.1 Category_2.8.2 cluster_1.11.12 genefilter_1.22.0 [5] GSEABase_1.4.0 KEGGgraph_0.8.15 RBGL_1.18.0 ROC_1.16.0 [9] splines_2.8.1 survival_2.34-1 XML_1.99-0 Thanks, Fraser _______________________________________________ Bioconductor mailing list Bioconductor at stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/bioconductor Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor
ADD COMMENT
0
Entering edit mode
Hi Fraser, I just added your fix to Rgraphviz. The idea of the user-defined glyph drawing functions is that people can draw whatever they want to, e.g. by extending already available functions, but since the pieGlyph documentation is advertising labels I agree that it should deliver... Thanks for the patch, Florian Sim, Fraser wrote: > I fixed the problem by referring to pie function and editing pieGlyphs > accordingly. > > It's designed to draw lines +10% of the radius out for each label, and > place the labels +20% from the center. It seems to works ok. > > Can we somehow add this to Rgraphviz? > > Fraser > > Here's my code: > > pieGlyph_new = function (x, xpos, ypos, labels = names(x), edges = 200, > radius = 0.8, > density = NULL, angle = 45, col = NULL, border = NULL, lty = NULL, > main = NULL, ...) > { > if (!is.numeric(x) || anyis.na(x) | x <= 0)) > stop("pie: `x' values must be positive.") > if (is.null(labels)) > labels <- as.character(1:length(x)) > x <- c(0, cumsum(x)/sum(x)) > dx <- diff(x) > nx <- length(dx) > if (is.null(col)) > col <- if (is.null(density)) > c("lightblue", "mistyrose", "lightcyan", "lavender", > "cornsilk", "white") > else par("fg") > col <- rep(col, length.out = nx) > border <- rep(border, length.out = nx) > lty <- rep(lty, length.out = nx) > angle <- rep(angle, length.out = nx) > density <- rep(density, length.out = nx) > for (i in 1:nx) { > n <- max(2, floor(edges * dx[i])) > t2p <- 2 * pi * seq(x[i], x[i + 1], length = n) > xc <- c(cos(t2p), 0) * radius + xpos > yc <- c(sin(t2p), 0) * radius + ypos > polygon(xc, yc, density = density[i], angle = angle[i], > border = border[i], col = col[i], lty = lty[i]) > > # new code here > t2p <- 2 * pi * mean(x[i + 0:1]) > xc <- cos(t2p) * radius * c(1,1.1,1.2) + xpos > yc <- sin(t2p) * radius * c(1,1.1,1.2) + ypos > lab <- as.character(labels[i]) > if (!is.na(lab) && nzchar(lab)) { > lines(xc[1:2], yc[1:2]) > text(xc[3], yc[3], labels[i], xpd = TRUE, > adj = ifelse(xc < xpos, 1, ifelse(xc == xpos, 0.5, > 0)),...) > } > # end new code > > } > invisible(NULL) > } > > > -----Original Message----- > From: bioconductor-bounces at stat.math.ethz.ch > [mailto:bioconductor-bounces at stat.math.ethz.ch] On Behalf Of Sim, Fraser > Sent: Thursday, April 16, 2009 4:09 PM > To: bioconductor at stat.math.ethz.ch > Subject: [BioC] PieGlyph - labels do not show > > Hi Robert, > > I'm working with RGraphViz to plot PieGlyphs and wanted to try and add > labels to the pie slices. The Usage page describes such a use. > > If I tried the following but no labels appear: > > library(Rgraphviz) > plot(1:10, col="white") > pieGlyph(1:2, 5, 5, labels = c("A","B") ) > > **************************************** > Also when I look at the function itself, it does look like it uses > 'labels' at all. > > function (x, xpos, ypos, labels = names(x), edges = 200, radius = 0.8, > density = NULL, angle = 45, col = NULL, border = NULL, lty = NULL, > main = NULL, ...) > { > if (!is.numeric(x) || anyis.na(x) | x <= 0)) > stop("pie: `x' values must be positive.") > if (is.null(labels)) > labels <- as.character(1:length(x)) > x <- c(0, cumsum(x)/sum(x)) > dx <- diff(x) > nx <- length(dx) > if (is.null(col)) > col <- if (is.null(density)) > c("lightblue", "mistyrose", "lightcyan", "lavender", > "cornsilk", "white") > else par("fg") > col <- rep(col, length.out = nx) > border <- rep(border, length.out = nx) > lty <- rep(lty, length.out = nx) > angle <- rep(angle, length.out = nx) > density <- rep(density, length.out = nx) > for (i in 1:nx) { > n <- max(2, floor(edges * dx[i])) > t2p <- 2 * pi * seq(x[i], x[i + 1], length = n) > xc <- c(cos(t2p), 0) * radius + xpos > yc <- c(sin(t2p), 0) * radius + ypos > polygon(xc, yc, density = density[i], angle = angle[i], > border = border[i], col = col[i], lty = lty[i]) > } > invisible(NULL) > } > <environment: namespace:rgraphviz=""> > > ****************************************** > > Here's my sessionInfo. > > R version 2.8.1 (2008-12-22) > i386-pc-mingw32 > > locale: > LC_COLLATE=English_United States.1252;LC_CTYPE=English_United > States.1252;LC_MONETARY=English_United > States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 > > attached base packages: > [1] grid stats graphics grDevices datasets utils tools > > [8] methods base > > other attached packages: > [1] org.Hs.eg.db_2.2.6 bioDist_1.14.0 gplots_2.6.0 > [4] gdata_2.4.2 gtools_2.5.0 limma_2.16.4 > [7] RColorBrewer_1.0-2 hgu133plus2.db_2.2.5 RSQLite_0.7-1 > [10] DBI_0.2-4 AnnotationDbi_1.4.2 Rgraphviz_1.21.7 > [13] graph_1.20.0 Biobase_2.2.1 rcom_2.0-4 > [16] rscproxy_1.0-12 > > loaded via a namespace (and not attached): > [1] annotate_1.20.1 Category_2.8.2 cluster_1.11.12 > genefilter_1.22.0 > [5] GSEABase_1.4.0 KEGGgraph_0.8.15 RBGL_1.18.0 ROC_1.16.0 > > [9] splines_2.8.1 survival_2.34-1 XML_1.99-0 > > Thanks, > Fraser > > _______________________________________________ > Bioconductor mailing list > Bioconductor at stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: > http://news.gmane.org/gmane.science.biology.informatics.conductor > > _______________________________________________ > Bioconductor mailing list > Bioconductor at stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor > -- Florian Hahne, PhD Computational Biology Program Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M1-B514 PO Box 19024 Seattle, Washington 98109-1024 206-667-3148 fhahne at fhcrc.org
ADD REPLY

Login before adding your answer.

Traffic: 829 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6