📌  相关文章
📜  在Python中使用 Altair 的带有抖动的水平带状图

📅  最后修改于: 2022-05-13 01:55:03.528000             🧑  作者: Mango

在Python中使用 Altair 的带有抖动的水平带状图

先决条件:牛郎星

Altair 是一个Python中的统计数据可视化库,它基于 Vega 和 Vega-Lite 可视化语法。带状图用于图形数据分析。它是一个简单的响应值图,按单轴排序。带状图由 2 个不同的轴 (X, Y) 组成。带状图为直方图和其他基于密度的图提供了替代方案,并且通常用于小数据集。

一个简单的带状图用于将数据绘制为点,这对我们来说可能不是很有用。为了使简单的带状图更加有说服力,我们添加了随机抖动。简单来说,抖动是向数据添加少量可变性(水平或垂直)以确保所有数据点都可见。在本文中,我们将讨论如何横向实现。

方法

  • 导入模块
  • 读取或创建数据
  • 现在,要创建水平带状图,我们将交换 x 轴和 y 轴。
  • 为绘图定义抖动
  • 绘制图形
  • 显示图

使用的函数

calculate_transform() 允许用户在数据集中定义新字段,这些字段是使用表达式从其他字段计算出来的。

句法:

calculate_transform()

程序:

Python3
import altair as alt
import pandas as pd
import numpy as np
  
  
data_url = 'https://raw.githubusercontent.com/curran/data/gh-pages/geonames/cities1000000.csv'
df = pd.read_csv(data_url)
df.head()
  
  
horizontal_stripplot = alt.Chart(df, width=600, height=100).mark_circle(size=12).encode(
    y=alt.Y(
        'jitter:Q',
        title=None,
        axis=alt.Axis(values=[0], ticks=True, grid=False, labels=False),
        scale=alt.Scale(),
    ),
    x=alt.X('longitude:Q', scale=alt.Scale(domain=(20, 85))),
    color=alt.Color('continent:N', legend=None),
    row=alt.Row(
        'continent:N',
        header=alt.Header(
            labelAngle=0,
            labelFontSize=16,
            titleOrient='top',
            labelOrient='left',
            labelAlign='left',
        ),
    ),
).transform_calculate(
    # Generate Gaussian jitter with a Box-Muller transform
    jitter='sqrt(-2*log(random()))*cos(2*PI*random())'
).configure_facet(
    spacing=0
).configure_view(
    stroke=None
).configure_axis(
    labelFontSize=16,
    titleFontSize=16
)
  
  
horizontal_stripplot


输出: