6个顶级可视化Python库( 三 )


例如,使用上面的泰坦尼克号数据,我们想计算每个班级的人数,我们所需要的只是在y_axis中使用count()
import seaborn as snsimport altair as alt titanic = sns.load_dataset("titanic")alt.Chart(titanic).mark_bar().encode(alt.X('class'),y='count()')

6个顶级可视化Python库

文章插图
 
2.易于转换数据
Altair还使创建图表时转换数据变得非常容易
例如,如果我们想找到泰坦尼克号中每个性别的平均年龄,而不是像Plotly那样预先进行转换,我们可以在代码中执行转换以创建图表 。
hireable = alt.Chart(titanic).mark_bar().encode(x='sex:N',y='mean_age:Q').transform_aggregate(mean_age='mean(age)',groupby=['sex'])hireable
6个顶级可视化Python库

文章插图
 
这里的逻辑是使用transform_aggregate()来获取每个性别(groupby = ['sex'])的年龄(平均值)的平均值,并将平均值保存到变量mean(age)中 。我们将此变量作为y_axis 。
我们还可以使用:N来确保该类别是名义数据(没有任何顺序的类别数据),或者使用:Q来确保mean_age是定量数据(值的度量,例如数字)
在此处查看数据转换的完整列表
3.易于链接的图
Altair还允许您在图之间进行一些令人印象深刻的链接,例如使用间隔选择来过滤附加直方图的内容 。
例如,如果我们想在间隔内可视化每个班级的人数,我们可以选择年龄和票价之间的一个点状图,我们可以这样做 。
brush = alt.selection(type='interval')points = alt.Chart(titanic).mark_point().encode(x='age:Q',y='fare:Q',color=alt.condition(brush, 'class:N', alt.value('lightgray'))).add_selection(brush)bars = alt.Chart(titanic).mark_bar().encode(y='class:N',color='class:N',x = 'count(class):Q').transform_filter(brush)points & bars
6个顶级可视化Python库

文章插图
 
当我们拖动鼠标以选择散点图中的间隔时,我们可以在下面的条形图中看到变化 。当与早期的转换和计算结合使用时,这意味着您可以创建一些非常互动的图,这些图可以进行即时计算-甚至不需要运行的Python服务器!
缺点除非您指定自定义样式,否则简单的图表(如条形图)看起来不会像seaborn或Plotly 。Altair还不建议使用5000个以上样本的数据集,而是建议您在可视化之前汇总数据 。
要点:Altair是复杂图表显示统计数据的理想选择 。Altair无法处理超过5000个样本的数据,并且与Plotly或Seaborn相比,某些简单图表的样式看起来不一样 。
BokehBokeh是一个灵活的交互式可视化库,以Web浏览器为代表 。
优点· Matplotlib的交互式版本
如果我们将在上述交互式可视化库中排名,那么Bokeh在与Matplotlib的相似性方面可能排名第一 。
Matplotlib可以创建任何绘图,因为它是一个低级的可视化库 。Bokeh可以用作高级或低级接口; 因此,它可以创建Matplotlib创建的许多复杂图,但是用更少的代码行和更高的分辨率 。
例如,Matplotlib的圆图
import matplotlib.pyplot as pltfig, ax = plt.subplots()x = [1, 2, 3, 4, 5]y = [2, 5, 8, 2, 7]for x,y in zip(x,y):ax.add_patch(plt.Circle((x, y), 0.5, edgecolor = "#f03b20",facecolor='#9ebcda', alpha=0.8))#Use adjustable='box-forced' to make the plot area square-shaped as well.ax.set_aspect('equal', adjustable='datalim')ax.set_xbound(3, 4)ax.plot()#Causes an autoscale update.plt.show()
6个顶级可视化Python库

文章插图
 
也可以使用Bokeh以更好的分辨率和更多实用性创建
from bokeh.io import output_file, showfrom bokeh.models import Circlefrom bokeh.plotting import figurereset_output()output_notebook()plot = figure(plot_width=400, plot_height=400, tools="tap", title="Select a circle")renderer = plot.circle([1, 2, 3, 4, 5], [2, 5, 8, 2, 7], size=50)selected_circle = Circle(fill_alpha=1, fill_color="firebrick", line_color=None)nonselected_circle = Circle(fill_alpha=0.2, fill_color="blue", line_color="firebrick")renderer.selection_glyph = selected_circlerenderer.nonselection_glyph = nonselected_circleshow(plot)
6个顶级可视化Python库

文章插图
 
2.地块之间的联系
散景还可以使情节之间的链接变得非常容易 。在一个绘图中应用的更改将应用于具有类似变量的另一绘图 。


推荐阅读