如何在Python中使用 Altair 制作带有中线的直方图?
在本文中,我们将学习如何在Python中使用Altair制作带有中线的直方图。这篇文章也是 Altair 图形语法的一个很好的例子。
Altair 是Python中最新的交互式数据可视化库之一。 Altair 基于 vega 和 vegalite——交互式图形的语法。这里我们将使用 import 关键字来使用 Altair 库来使用它。
用中线说明直方图
首先,我们将加载用于使用 Altair 制作带有均值线和中线的直方图的Python包。
Python3
# import required modules
import altair as alt
import numpy as np
import pandas as pd
Python3
# generating data
np.random.seed(42)
df = pd.DataFrame({'height': np.random.normal(150, 10, 1000)})
Python3
# initialize chart
base=alt.Chart(df)
Python3
# generate histogram
hist = base.mark_bar().encode(
x=alt.X('height:Q', bin=alt.BinParams(), axis=None), y='count()')
Python3
# generate median line
median_line = base.mark_rule().encode(
x=alt.X('mean(height):Q', title='Height'), size=alt.value(5))
Python3
# depict illustration
hist+median_line
Python3
# import required modules
import altair as alt
import numpy as np
import pandas as pd
# generating data
np.random.seed(42)
df = pd.DataFrame({'height': np.random.normal(150, 10, 1000)})
# initialize chart
base = alt.Chart(df)
# generate histogram
hist = base.mark_bar().encode(
x=alt.X('height:Q', bin=alt.BinParams(maxbins=100), axis=None), y='count()')
# generate median line
red_median_line = base.mark_rule(color='red').encode(
x=alt.X('mean(height):Q', title='Height'), size=alt.value(5))
# depict illustration
hist+red_median_line
现在我们将生成数据以制作带有中线的直方图。在这里,我们将使用 Numpy 从正态分布生成随机数并创建熊猫数据框。
蟒蛇3
# generating data
np.random.seed(42)
df = pd.DataFrame({'height': np.random.normal(150, 10, 1000)})
基本上这里我们倾向于构建带有中线的条形图,它可以产生两层双星图像对象并将它们组合起来。使用 Altair 的图表函数,我们创建了数据数据框的基础图。
蟒蛇3
# initialize chart
base=alt.Chart(df)
现在我们使用 Altair 的mark_bar()函数并创建基础对象来制作直方图。此外,在这里我们提到我们有兴趣制作直方图的变量。
蟒蛇3
# generate histogram
hist = base.mark_bar().encode(
x=alt.X('height:Q', bin=alt.BinParams(), axis=None), y='count()')
使用 Altair 库中的mark_rule()函数,我们再次使用基础对象和数据来创建一条中线。
蟒蛇3
# generate median line
median_line = base.mark_rule().encode(
x=alt.X('mean(height):Q', title='Height'), size=alt.value(5))
现在为了形成具有中线的基本直方图,我们倾向于仅将条形图对象和中线对象组合如下:
蟒蛇3
# depict illustration
hist+median_line
输出:
因此,这里我们在Python中使用 Altair 得到带有中线的直方图。
现在让我们了解如何获得自定义直方图。
使用 Altair 自定义带有中线的直方图
在带有中线的基本直方图中,Altair 库使用默认参数绘制直方图。例如,Altair 为直方图选择了蓝色,并为我们选择了 bin 数量。同样,Altair 为中线选择了黑色。但是我们可以使用 Altair 轻松自定义带有中线的直方图。
首先,我们将增加直方图中的 bin 数量,然后我们将中线的颜色更改为红色。
我们将在坐标轴参数中使用maxbins=100参数,以形成具有 100 个 bin 的直方图。然后我们可以在mark_rule()函数中使用color=red将中线的颜色更改为红色。最后,让我们结合直方图和中线对象。然后我们将在 Altair 中使用中线改进直方图的版本。
蟒蛇3
# import required modules
import altair as alt
import numpy as np
import pandas as pd
# generating data
np.random.seed(42)
df = pd.DataFrame({'height': np.random.normal(150, 10, 1000)})
# initialize chart
base = alt.Chart(df)
# generate histogram
hist = base.mark_bar().encode(
x=alt.X('height:Q', bin=alt.BinParams(maxbins=100), axis=None), y='count()')
# generate median line
red_median_line = base.mark_rule(color='red').encode(
x=alt.X('mean(height):Q', title='Height'), size=alt.value(5))
# depict illustration
hist+red_median_line
输出:
因此,上图显示了在Python中使用 Altair 的具有 100 个 bin 和红色中线的直方图。