如何在 D3 中生成背靠背图表?

How to generate back to back chart in D3?

我正在使用 Matplotlib 绘制背靠背图:

import numpy as np
import matplotlib.pyplot as plt
# create data
A = np.array([3,6,9,4,2,5])
B = np.array([2,8,1,9,7,3])
X = np.arange(6)
  
# plot the bars
plt.barh(X, A, align='center',
         alpha=0.9, color = 'y')
  
plt.barh(X, -B, align='center', 
         alpha=0.6, color = 'c')
plt.yticks([0, 1, 2,3,4,5], ['A', 'B', 'C', 'D', 'E', 'F'])
plt.xticks([], [])


plt.show()

我想知道如何使用 python 生成 d3 代码? Altair 是正确的选择吗?

以下是使用 Altair 生成类似图表的示例:

import pandas as pd
import altair as alt

df = pd.DataFrame({
  "A": np.array([3,6,9,4,2,5]),
  "B": np.array([2,8,1,9,7,3]),
  "X": ['A', 'B', 'C', 'D', 'E', 'F'],
})

alt.Chart(df).transform_calculate(
    A=-alt.datum.A  
).transform_fold(
    ["A", "B"], as_=["key", "value"]
).mark_bar().encode(
    x=alt.X("value:Q", axis=None),
    y='X:N',
    color="key:N"
).properties(
    width=300,
    height=200
)