X 轴上的奇怪年份值
strange year values on X axis
如果我使用 vega 数据集 "disasters" 并制作一个简单的图表,我会得到一些奇怪的年份值。
在 Altair 中,代码是:
import altair as alt
from vega_datasets import data
dis=data.disasters()
alt.Chart(dis).mark_bar().encode(
x=alt.X('Year:T'),
y=alt.Y('Deaths'),
color='Entity'
)
年份整数不是标准时间值。
在 Vega-Lite 中,您可以将 "format": {"parse": {"Year": "date: '%Y'"}}
添加到数据块以指定字段 "year"
.
的自定义日期解析格式
在 Altair 中,您可以类似地指定 *Data class 的 format
属性(例如,NamedData
)。
添加到@kanitw 的回答:当您将整数转换为日期时间时,该整数被视为自零日期起的纳秒数。您可以通过执行以下命令在 pandas 中看到这一点:
>>> pd.to_datetime(dis.Year)
0 1970-01-01 00:00:00.000001900
1 1970-01-01 00:00:00.000001901
2 1970-01-01 00:00:00.000001902
3 1970-01-01 00:00:00.000001903
4 1970-01-01 00:00:00.000001905
Name: Year, dtype: datetime64[ns]
Altair/Vega-Lite 使用类似的约定。
如果您想在加载数据时将年份解析为日期,然后使用 Altair 绘制年份,您可以执行以下操作:
import altair as alt
from vega_datasets import data
dis=data.disasters(parse_dates=['Year'])
alt.Chart(dis).mark_bar().encode(
x=alt.X('year(Year):T'),
y=alt.Y('Deaths'),
color='Entity'
)
首先,我们通过将适当的 pandas.read_csv
参数传递给加载函数,将年份列解析为日期,然后使用 year
timeUnit 从完整的日期时间。
如果您从 CSV URL 而不是 pandas 数据帧绘制数据,Vega-Lite 足够智能,可以根据您在图表中指定的编码解析 CSV 文件,这表示以下将给出相同的结果:
dis=data.disasters.url
alt.Chart(dis).mark_bar().encode(
x=alt.X('year(Year):T'),
y=alt.Y('Deaths:Q'),
color='Entity:N'
)
如果我使用 vega 数据集 "disasters" 并制作一个简单的图表,我会得到一些奇怪的年份值。
在 Altair 中,代码是:
import altair as alt
from vega_datasets import data
dis=data.disasters()
alt.Chart(dis).mark_bar().encode(
x=alt.X('Year:T'),
y=alt.Y('Deaths'),
color='Entity'
)
年份整数不是标准时间值。
在 Vega-Lite 中,您可以将 "format": {"parse": {"Year": "date: '%Y'"}}
添加到数据块以指定字段 "year"
.
在 Altair 中,您可以类似地指定 *Data class 的 format
属性(例如,NamedData
)。
添加到@kanitw 的回答:当您将整数转换为日期时间时,该整数被视为自零日期起的纳秒数。您可以通过执行以下命令在 pandas 中看到这一点:
>>> pd.to_datetime(dis.Year)
0 1970-01-01 00:00:00.000001900
1 1970-01-01 00:00:00.000001901
2 1970-01-01 00:00:00.000001902
3 1970-01-01 00:00:00.000001903
4 1970-01-01 00:00:00.000001905
Name: Year, dtype: datetime64[ns]
Altair/Vega-Lite 使用类似的约定。
如果您想在加载数据时将年份解析为日期,然后使用 Altair 绘制年份,您可以执行以下操作:
import altair as alt
from vega_datasets import data
dis=data.disasters(parse_dates=['Year'])
alt.Chart(dis).mark_bar().encode(
x=alt.X('year(Year):T'),
y=alt.Y('Deaths'),
color='Entity'
)
首先,我们通过将适当的 pandas.read_csv
参数传递给加载函数,将年份列解析为日期,然后使用 year
timeUnit 从完整的日期时间。
如果您从 CSV URL 而不是 pandas 数据帧绘制数据,Vega-Lite 足够智能,可以根据您在图表中指定的编码解析 CSV 文件,这表示以下将给出相同的结果:
dis=data.disasters.url
alt.Chart(dis).mark_bar().encode(
x=alt.X('year(Year):T'),
y=alt.Y('Deaths:Q'),
color='Entity:N'
)