Python Altair-显示所有轴标记,但仅显示一些标记标签

Python Altair-显示所有轴标记,但仅显示一些标记标签,python,axis-labels,altair,Python,Axis Labels,Altair,对于如何显示所有x轴值的刻度,但仅显示某些x轴值的标签,我感到困惑。图表中的x轴值为0.0-3.0(十分之一),而我只想显示整数(0、1、2、3)的标签 以下是我正在处理的数据: bin count 0.0 0 0.1 0 0.2 0 0.3 0 0.4 0 0.5 0 0.6 0 0.7 0 0.8 0 0.9 0 1.0 0 1.1 1 1.2 3 1.3 7 1.4 14 1.5 13 1.6 29 1.7 47 1.8 59 1.9 59 2.0 75 2.1 72 2.2 103 2.

对于如何显示所有x轴值的刻度,但仅显示某些x轴值的标签,我感到困惑。图表中的x轴值为0.0-3.0(十分之一),而我只想显示整数(0、1、2、3)的标签

以下是我正在处理的数据:

bin count
0.0 0
0.1 0
0.2 0
0.3 0
0.4 0
0.5 0
0.6 0
0.7 0
0.8 0
0.9 0
1.0 0
1.1 1
1.2 3
1.3 7
1.4 14
1.5 13
1.6 29
1.7 47
1.8 59
1.9 59
2.0 75
2.1 72
2.2 103
2.3 96
2.4 119
2.5 76
2.6 93
2.7 68
2.8 70
2.9 44
3.0 49

我能管理的唯一进展是将数据类型设置为序号并增加标签字体大小:

alt.Chart(df).mark_bar().encode(x=alt.X('bin:O', axis=alt.Axis(labelFontSize=18, 
                                                  values=[round(i,1) for i in np.arange(0,3.1,.1)])), 
                                y=alt.Y('count:Q'))
这是图表的外观:


有什么建议吗?

您可以使用
tickCount
axis属性指定需要的刻度数,标签会自动选择,以避免重叠:

import altair as alt
import pandas as pd

df = pd.DataFrame({
    'bin': [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5,
            1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0],
    'count': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 14, 13, 29, 47,
              59, 59, 75, 72, 103, 96, 119, 76, 93, 68, 70, 44, 49]
})

alt.Chart(df).mark_bar().encode(
    x=alt.X('bin:Q', axis=alt.Axis(tickCount=df.shape[0], grid=False)),
    y=alt.Y('count:Q')
)

如果要进一步自定义标签位置和文本,可以使用。例如:


alt.Chart(df).mark_bar().encode(
    x=alt.X('bin:Q', axis=alt.Axis(
        tickCount=df.shape[0],
        grid=False,
        labelExpr="datum.value % 1 ? null : datum.label"
    )),
    y=alt.Y('count:Q')
)

您可以使用
tickCount
axis属性指定所需的刻度数,标签将自动选择,以避免重叠:

import altair as alt
import pandas as pd

df = pd.DataFrame({
    'bin': [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5,
            1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0],
    'count': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 14, 13, 29, 47,
              59, 59, 75, 72, 103, 96, 119, 76, 93, 68, 70, 44, 49]
})

alt.Chart(df).mark_bar().encode(
    x=alt.X('bin:Q', axis=alt.Axis(tickCount=df.shape[0], grid=False)),
    y=alt.Y('count:Q')
)

如果要进一步自定义标签位置和文本,可以使用。例如:


alt.Chart(df).mark_bar().encode(
    x=alt.X('bin:Q', axis=alt.Axis(
        tickCount=df.shape[0],
        grid=False,
        labelExpr="datum.value % 1 ? null : datum.label"
    )),
    y=alt.Y('count:Q')
)