5bfb32fdfc639f9bffb5435044cef164bdde0b28 kent Sun Dec 12 08:02:13 2021 -0800 Implementing barChartMerge trackDb option for faceted bar charts. diff --git src/hg/hgc/barChartClick.c src/hg/hgc/barChartClick.c index c311843..70a0426 100644 --- src/hg/hgc/barChartClick.c +++ src/hg/hgc/barChartClick.c @@ -401,30 +401,31 @@ return longest * 1.02; } void deunderbarColumn(struct fieldedTable *ft, int fieldIx) /* Ununderbar all of a column inside table because space/underbar gets * so confusing */ { struct fieldedRow *row; for (row = ft->rowList; row != NULL; row = row->next) replaceChar(row->row[fieldIx], '_', ' '); } static void svgBarChart(struct barChartBed *chart, struct trackDb *tdb, double maxVal, char *metric) /* Plot bar chart without quartiles or anything fancy just using SVG */ { +puts("
");
/* Load up input labels, color, and data */
struct barChartCategory *categs = barChartUiGetCategories(database, tdb);
int categCount = slCount(categs);
if (categCount != chart->expCount)
{
warn("Problem in %s barchart track. There are %d categories in trackDb and %d in data",
tdb->track, categCount, chart->expCount);
return;
}
char *statsFile = trackDbSetting(tdb, "barChartStatsUrl");
struct hash *statsHash = NULL;
int countStatIx = 0;
double statsSize = 0.0;
if (statsFile != NULL)
@@ -565,49 +566,48 @@
{
if (trackDbSettingClosestToHomeOrDefault(tdb, "url2", NULL) != NULL)
printOtherCustomUrl(tdb, chartItem->name2, "url2", TRUE);
else
printf("(%s: %s)
\n", name2Label, chartItem->name2);
}
else
printf("
\n");
int categId;
float highLevel = barChartMaxValue(chartItem, &categId);
char *units = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_UNIT, "units");
char *metric = trackDbSettingClosestToHomeOrDefault(tdb, BAR_CHART_METRIC, "");
printf("Maximum %s value: %0.2f %s in %s
\n",
metric, highLevel, units, barChartUiGetCategoryLabelById(categId, database, tdb));
-printf("Score: %d
\n", chartItem->score);
-printf("Genomic position: "
- "%s %s:%d-%d
\n",
+printf("Gene position: "
+ "%s %s:%d-%d\n",
database, hgTracksPathAndSettings(), database,
chartItem->chrom, chartItem->chromStart+1, chartItem->chromEnd,
chartItem->chrom, chartItem->chromStart+1, chartItem->chromEnd);
-printf("Strand: %s\n", chartItem->strand);
+printf(" Strand: %s\n", chartItem->strand);
// print any remaining extra fields
if (numColumns > 0)
{
extraFieldsPrint(tdb, NULL, extraFields, extraFieldCount);
}
char *matrixUrl = NULL, *sampleUrl = NULL;
struct barChartItemData *vals = getSampleVals(tdb, chartItem, &matrixUrl, &sampleUrl);
-puts("
"); if (vals != NULL) { + puts("
");
// Print boxplot
char *df = makeDataFrame(tdb->table, vals);
char *colorFile = makeColorFile(tdb);
printBoxplot(df, item, chartItem->name2, units, colorFile);
printf("
View all data points for %s%s%s%s\n", df,
chartItem->name,
chartItem->name2 ? " (" : "",
chartItem->name2 ? chartItem->name2 : "",
chartItem->name2 ? ")" : "");
}
else
{
if (cfgOptionBooleanDefault("svgBarChart", FALSE))
{
printBarChart(item, chartItem, tdb, highLevel, metric);