首页 > 解决方案 > Altair Stripplot - 将列组合在一起

问题描述

使用此数据框结构,df_ppp

 #   Column        Non-Null Count  Dtype 
---  ------        --------------  ----- 
 0   MeanPPP       628 non-null    object
 1   StdPPP        626 non-null    object
 2   MeanPPG       628 non-null    object
 3   MeanPrice     628 non-null    object
 4   MeanSelected  628 non-null    object
 5   TotalMinutes  628 non-null    object
 6   TotalPoints   628 non-null    object
 7   Position      628 non-null    object
 8   Team          628 non-null    object
 9   Player        628 non-null    object
 10  Color         628 non-null    object

和以下代码:

stripplot =  alt.Chart(df_ppp, width=120).mark_circle().encode(
      x=alt.X(
          'jitter:Q',
          title=None,
          axis=alt.Axis(values=[0], ticks=True, grid=False, labels=False),
          scale=alt.Scale(),
      ),
      y=alt.Y('MeanPPP:Q'),
      color=alt.Color('Color:N', legend=None, scale=None),
      tooltip = [alt.Tooltip('Player:N'),
                alt.Tooltip('Position:N'),
                alt.Tooltip('Team:N'),
                alt.Tooltip('MeanPPP:Q'),
                alt.Tooltip('MeanPPG:Q'),
                alt.Tooltip('MeanPrice:Q'),
                alt.Tooltip('MeanSelected:Q'),
                alt.Tooltip('TotalMinutes:Q'),
                alt.Tooltip('TotalPoints:Q')],
      column=alt.Column(
          'Team:N',
          header=alt.Header(
              labelAngle=-90,
              titleOrient='top',
              labelOrient='bottom',
              labelAlign='right',
              labelPadding=10,
          ),
      ),
  ).transform_calculate(
      # Generate Gaussian jitter with a Box-Muller transform
      jitter='sqrt(-2*log(random()))*cos(2*PI*random())'
  ).configure_facet(
      spacing=0
  ).configure_view(
      stroke=None
  ).configure_axis(
        grid=False
  ).properties(height=300, width=50)

我正在绘制这个:

在此处输入图像描述


这是我要达到的结果,带状图更接近每个值。

Altair 示例 - 带状图

在此处输入图像描述


如何使列更紧密?

标签: pythonaltair

解决方案


Altair 代码非常完美。

列宽的问题不属于altair,而是属于用于绘制图表的streamlitconfig 。altair

streamlit覆盖列宽。

所以我改变了:

st.altair_chart(stripplot, use_container_width=True)

至:

st.altair_chart(stripplot)

现在我绘制:

在此处输入图像描述


推荐阅读