has2k1 / has2k1/plotnine

Feature: Support for Ibis expressions

Open
#659 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Feature Internal Dataframe
Dominant language
Python
Stars
4.8k
Forks
254
Avg merge
10h 35m
Merged PRs (30d)
9

Description

Hi! 👋🏻

I'm the lead developer of the Ibis project.

I recently did a write up of some analysis of Ibis's CI data using Ibis and plotnine.

I think plotnine is just the bee's knees, and I think ibis and plotnine could be even better together than they are right now.

What would it take to support ibis expressions? I am happy to take this all the way through myself, PR-ing to this repo as well as make any fixes to ibis that might be needed, but I want to check in to make sure this work would have a chance at getting in!

Here's an example from the above notebook where it would be great if I could pass in my ibis objects without having to first turn them into pandas DataFrames:

    t = ... # an ibis table expression
    df = t.execute()
    ggplot(
        df.loc[df.entity == "job"].reset_index(drop=True),
        aes(x="started_date", y="duration", color="factor(improvements)"),
    )
    ... # more plotting code follows

Instead, I'd like to write the following:

    t = ...  # an ibis table expression
    # _ is a placeholder that means "the child table", here it's referring to the t.filter(...) call
    ggplot(
        t.filter(_.entity == "job"),
        aes(x=_.started_date, y=_.duration, color="factor(improvements)"),
    )
    ... # more plotting code follows

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin at the ggplot entry point and compare the existing pandas DataFrame example with the proposed Ibis expression usage. Determine the scope needed for filtering and aesthetic expressions without calling execute(); done means the supplied Ibis table expressions work directly in the plotting example.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data-visualization
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.