簡體   English   中英

Altair - 在分面圖中繪制圓、橢圓、注釋

[英]Altair - plot circle, ellipse, annotations in faceted chart

是否可以按照圖表 x 和 y 變量的度量單位在 Altair 圖表內繪制線條和幾何形狀? 圖表可能是多面的,形狀和線條取決於每個特定面中的數據。

一個可重現的例子:

import pandas as pd
import numpy as np
import altair as alt
alt.renderers.enable('notebook')

# make some data to test
N = 1000
df = pd.DataFrame({
    'x1': np.random.normal(0, 1, N),
    'x2': np.random.normal(0, 1, N),
    'facet': np.random.choice(list('ABCDEFGHI'), N),
})

# derived variables 
df['y1'] = np.where(np.sqrt(df['x1']**2 + df['x2']**2) > 2, 'F', 'P')
df['y2'] = 0.5*df['x2'] + 2.0 + np.random.normal(0, .5, N)
df['color'] = np.where(df['y1'].eq('F'), 'red', 'green')

# custom color map
domain = ['F', 'P']
range_ = ['red', 'green']

# create and render the chart
p1 = alt.Chart(df).mark_circle(opacity=1, size=15).encode(
    alt.X('x1', scale=alt.Scale(domain=(-4, 4))),
    alt.Y('x2', scale=alt.Scale(domain=(-4, 4))),
    color=alt.Color('y1', scale=alt.Scale(domain=domain, range=range_)),
    facet='facet'
)

# set some additional properties
p1.properties(width=150, height=150, columns=3).resolve_scale()

產生以下輸出:

在此處輸入圖片說明

Q1:是否可以在每個圖表中繪制一個以 0, 0 為中心且半徑 = 2 的圓,如第二個方面所示?

圓的度量單位將與 x 和 y 的度量單位相同。 在這種情況下,x 和 y 可能表示物理線性測量,其中每個像素的長度在 x 上是均勻的,yie 它可能是一個飛鏢板。

類比可能是 R 格子 xyplot aspect = 'iso'。 在此處查看方面描述: https : //rdrr.io/cran/lattice/man/xyplot.html

Q2:是否可以在繪圖的一個角落添加一個文本注釋來計算每個圖表中“F”(紅色)的數量?

Q3:對於軸不是“iso”並且具有不同測量單位的情況,是否可以繪制一條線和橢圓(例如,95% 密度的橢圓),如下面的第二個方面所示? 也許在圖表上注釋了擬合線的斜率和截距?

例子:

# create and render the chart
p1 = alt.Chart(df).mark_point().encode(
    x='x2',
    y='y2',
    facet='facet'
)

# set some additional properties
p1.properties(width=150, height=150, columns=3).resolve_scale()

在此處輸入圖片說明

在 R Lattice 中,這些類型的可視化是通過使用“aspect”、一些特定的網格/網格函數以及在某些情況下編寫自定義“面板”(facet)函數來完成的,該函數可以訪問每個 facet 中的數據索引並且可以在每個方面運行線性模型並顯示結果。

Altair 中沒有這種注釋的機制,除了創建作為所需注釋基礎的數據並將它們繪制為普通圖表層之外。

對一般圖表注釋的支持是 Altair 使用的渲染庫 Vega 和 Vega-Lite 中的一個懸而未決的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM