in plot-stem/src/commonMain/kotlin/org/jetbrains/letsPlot/core/spec/front/tiles/PlotGeomTilesUtil.kt [149:222]
fun createLayerBuilder(
layerConfig: LayerConfig,
fontFamilyRegistry: FontFamilyRegistry,
geomInteraction: GeomInteraction?,
theme: Theme
): GeomLayerBuilder {
val geomProvider =
layerConfig.geomProto.geomProvider(
layerConfig,
layerConfig.aopConversion,
expFormat = theme.exponentFormat
)
val stat = layerConfig.stat
val layerBuilder = GeomLayerBuilder(
geomProvider = geomProvider,
stat = stat,
posProvider = layerConfig.posProvider,
fontFamilyRegistry = fontFamilyRegistry
)
.yOrientation(layerConfig.isYOrientation)
.marginal(layerConfig.isMarginal, layerConfig.marginalSide, layerConfig.marginalSize)
// Color aesthetics
layerBuilder
.colorByAes(layerConfig.colorByAes)
.fillByAes(layerConfig.fillByAes)
// geomTheme
layerBuilder.geomTheme(theme.geometries(layerConfig.geomProto.geomKind))
val constantAesMap = layerConfig.constantsMap
for (aes in constantAesMap.keys) {
@Suppress("UNCHECKED_CAST", "MapGetWithNotNullAssertionOperator")
layerBuilder.addConstantAes(aes as Aes<Any>, constantAesMap[aes]!!)
}
if (layerConfig.explicitGroupingVarNames != null) {
layerBuilder.groupingVarNames(layerConfig.explicitGroupingVarNames)
}
// no map_join, data=gdf or map=gdf - group values and geometries by GEO_ID
DataFrameUtil.variables(layerConfig.combinedData)[GeoConfig.GEO_ID]?.let {
layerBuilder.pathIdVarName(GeoConfig.GEO_ID)
}
// variable bindings
val bindings = layerConfig.varBindings
for (binding in bindings) {
layerBuilder.addBinding(binding)
}
layerBuilder
.disableLegend(layerConfig.isLegendDisabled)
.customLegendOptions(layerConfig.customLegendOptions)
geomInteraction?.let {
layerBuilder
.locatorLookupSpec(it.createLookupSpec())
.contextualMappingProvider(it)
}
// annotations
layerBuilder.annotationSpecification(
layerConfig.annotations,
theme.annotations().textStyle(),
theme.annotations().useCustomColor()
)
layerBuilder.defaultFormatters(
createDefaultFormatters(layerConfig, theme.exponentFormat, tz = layerConfig.tz)
)
return layerBuilder
}