I have a need to have a left side faceted chart (using mark_rect) that has several small-multiples/mini charts. On the right, I would like to label them by their title using mark_text.
The concatenation works fine using (left | right) , however I have a need to remove the box that is on the view from mark_text
Example code describing my is below:
import altair as alt
import pandas as pd
df = pd.DataFrame(
[['BookA',0,'Hello',3],
['BookA',0,'World',1],
['BookA',1,'Hello',1],
['BookA',1,'World',0],
['BookA',2,'Hello',4],
['BookA',2,'World',2],
['BookB',0,'Hello',0],
['BookB',0,'World',0],
['BookB',1,'Hello',2],
['BookB',1,'World',3],
['BookC',0,'Hello',1],
['BookC',0,'World',0],
['BookC',1,'Hello',1],
['BookC',1,'World',2],
['BookC',2,'Hello',3],
['BookC',2,'World',4],
['BookC',3,'Hello',0],
['BookC',3,'World',0],
], columns = ['title','line','var','val']
)
base = alt.Chart(df)
# Left chart containing heatmap
left = base.mark_rect().encode(
x=alt.X('line:O',axis=alt.Axis(tickSize=0,labels=False,title="",domain=False)),
y=alt.Y('var:O',axis=alt.Axis(tickSize=0,title="",labelFontSize = 12,labelPadding = 6,domain=False)),
color= alt.Color('val:O',scale=alt.Scale(scheme="blues"),legend=None),
facet=alt.Facet('title:N', columns=1,header=alt.Header(labelExpr="''",labelOrient="right",title=""))
).resolve_scale(
x='independent' #Make each plot have scale of x-axis only as per desired length
).properties(height = 50)
# Right chart containing Book title
right = base.mark_text(strokeOpacity = 1,
dx= 300, #Added to shift by right
fontSize = 14,fontWeight = 'normal', baseline='top').encode(
text = alt.Text('title'),
facet=alt.Facet('title:N', columns=1,header=alt.Header(labelExpr="''",labelOrient="right",title=""))
).properties(height = 51)
(left | right).configure_view(stroke='black',strokeWidth=2)
I would ideally like to remove the black bordered boxes that appear in the middle. If I set strokeWidth = 0 in configure_view, it affects the left visualization in the below image, which I do not wish to.
