使用 plotnine 进行轴缩放

Axis scaling with plotnine

到目前为止,我已经花了几个小时来完成 plotnine 中的轴缩放。 到目前为止我发现的所有内容都不起作用。

是数据吗,是定义图表的代码吗,希望大家能看出哪里不对。

数据如下:

数据类型为:

concat                 object
direction              object
date_trunc    timedelta64[ns]
comment                object
timestamp      datetime64[ns]
dtype: object

以下代码按预期创建图表:

ch_time_plot = (p9.ggplot(data= ch_time,
                         mapping= p9.aes(x= 'timestamp', 
                                         y= 'date_trunc',
                                         color= 'direction'))
                + p9.geom_line()
                + p9.theme(axis_text_x= p9.element_text(rotation=90))
               )

# ch_time_plot += p9.ylim(0,5)
# => TypeError: Discrete value supplied to continuous scale

# ch_time_plot += p9.expand_limits(y=0)
# => AttributeError: 'int' object has no attribute 'value'

# ch_time_plot += p9.scale_y_continuous(limits = (1, 10))
# => TypeError: Discrete value supplied to continuous scale

ch_time_plot

我想要实现的是始终显示 y 轴 (0) 的原点。一旦我注释掉代码中显示的一行(应该这样做),我就会收到一条错误消息,并且没有更多的图表。

我的代码有什么问题?

由于使用的数据类型,上述示例中的缩放不起作用。

只要在 y 轴 timedelta64[ns] 上使用缩放就不起作用。

经过以下转换:

ch_time['change_time']= ch_time['date_trunc'] / np.timedelta64(1, 's')

图表可以适当缩放:

ch_time_plot = (p9.ggplot(data= ch_time,
                         mapping= p9.aes(x= 'timestamp', 
                                         y= 'change_time',
                                         color= 'direction'))
                + p9.geom_line()
                + p9.theme(axis_text_x= p9.element_text(rotation=90))
                + p9.scale_y_continuous(limits=(0, 6))
               )