| 
                         Bokeh 很美。从概念上讲,Bokeh 类似于 ggplot,它们都是用图形语法来构建图片,但 Bokeh  具备可以做出专业图形和商业报表且便于使用的界面。为了说明这一点,我根据 538 Masculinity Survey 数据集写了制作直方图的代码: 
- import pandas as pd 
 - from bokeh.plotting import figure 
 - from bokeh.io import show 
 -  
 - # is_masc is a one-hot encoded dataframe of responses to the question: 
 - # "Do you identify as masculine?" 
 -  
 - #Dataframe Prep 
 - counts = is_masc.sum() 
 - resps = is_masc.columns 
 -  
 - #Bokeh 
 - p2 = figure(title='Do You View Yourself As Masculine?', 
 -           x_axis_label='Response', 
 -           y_axis_label='Count', 
 -           x_range=list(resps)) 
 - p2.vbar(x=resps, top=counts, width=0.6, fill_color='red', line_color='black') 
 - show(p2) 
 -  
 - #Pandas 
 
  
用 Bokeh 表示调查结果 
红色的条形图表示 538 个人关于「你认为自己有男子汉气概吗?」这一问题的答案。9~14 行的 Bokeh  代码构建了优雅且专业的响应计数直方图——字体大小、y 轴刻度和格式等都很合理。 
我写的代码大部分都用于标记坐标轴和标题,以及为条形图添加颜色和边框。在制作美观且表现力强的图片时,我更倾向于使用  Bokeh——它已经帮我们完成了大量美化工作。 
用 Pandas 表示相同的数据 
蓝色的图是上面的第 17 行代码。这两个直方图的值是一样的,但目的不同。在探索性设置中,用 Pandas 写一行代码查看数据很方便,但 Bokeh  的美化功能非常强大。 
Bokeh 提供的所有便利都要在 matplotlib 中自定义,包括 x 轴标签的角度、背景线、y  轴刻度以及字体(大小、斜体、粗体)等。下图展示了一些随机趋势,其自定义程度更高:使用了图例和不同的颜色和线条。 
Bokeh 还是制作交互式商业报表的绝佳工具。 
Plotly 
Plotly 非常强大,但用它设置和创建图形都要花费大量时间,而且都不直观。在用 Plotly  忙活了大半个上午后,我几乎什么都没做出来,干脆直接去吃饭了。我只创建了不带坐标标签的条形图,以及无法删掉线条的「散点图」。Ploty  入门时有一些要注意的点: 
    - 安装时要有 API 秘钥,还要注册,不是只用 pip 安装就可以;
 
    - Plotly 所绘制的数据和布局对象是独一无二的,但并不直观;
 
    - 图片布局对我来说没有用(40 行代码毫无意义!)
 
 
但它也有优点,而且设置中的所有缺点都有相应的解决方法: 
    - 你可以在 Plotly 网站和 Python 环境中编辑图片;
 
    - 支持交互式图片和商业报表;
 
    - Plotly 与 Mapbox 合作,可以自定义地图;
 
    - 很有潜力绘制优秀图形。
 
 
以下是我针对这个包编写的代码: 
- #plot 1 - barplot 
 - # **note** - the layout lines do nothing and trip no errors 
 - data = [go.Bar(x=team_ave_df.team, 
 -               y=team_ave_df.turnovers_per_mp)] 
 -  
 - layout = go.Layout( 
 -  
 -     title=go.layout.Title( 
 -         text='Turnovers per Minute by Team', 
 -         xref='paper', 
 -         x=0 
 -     ), 
 -  
 -     xaxis=go.layout.XAxis( 
 -         title = go.layout.xaxis.Title( 
 -             text='Team', 
 -             font=dict( 
 -                     family='Courier New, monospace', 
 -                     size=18, 
 -                     color='#7f7f7f' 
 -                 ) 
 -         ) 
 -     ), 
 -  
 -     yaxis=go.layout.YAxis( 
 -         title = go.layout.yaxis.Title( 
 -             text='Average Turnovers/Minute', 
 -             font=dict( 
 -                     family='Courier New, monospace', 
 -                     size=18, 
 -                     color='#7f7f7f' 
 -                 ) 
 -         ) 
 -     ), 
 -  
 -     autosize=True, 
 -     hovermode='closest') 
 -  
 - py.iplot(figure_or_data=data, layoutlayout=layout, filename='jupyter-plot', sharing='public', fileopt='overwrite') 
 -  
 -  
 -  
 - #plot 2 - attempt at a scatterplot 
 - data = [go.Scatter(x=player_year.minutes_played, 
 -                   y=player_year.salary, 
 -                   marker=go.scatter.Marker(color='red', 
 -                                           size=3))] 
 -  
 - layout = go.Layout(title="test", 
 -                 xaxis=dict(title='why'), 
 -                 yaxis=dict(title='plotly')) 
 -  
 - py.iplot(figure_or_data=data, layoutlayout=layout, filename='jupyter-plot2', sharing='public') 
 -  
 - [Image: image.png] 
 
  
表示不同 NBA 球队每分钟平均失误数的条形图 
表示薪水和在 NBA 的打球时间之间关系的散点图                         (编辑:91站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |