[雪峰磁针石博客]Bokeh数据可视化工具5视觉增强

作者: oychw | 来源:发表于2018-08-07 04:45 被阅读37次

    注释用于向绘图添加补充信息,例如标题,图例和彩色地图等。
    Widget通过按钮,下拉菜单,滑块和提供交互性支持。
    视觉属性为绘图提供了广泛的视觉增强,例如线条和文字的颜色和填充,以及诸如的交互增强
    将鼠标悬停在工具上并选择兴趣点。

    添加标题(title)

    #Setting up the data for chapter 
    #Import the required packages
    import pandas as pd
    from bokeh.sampledata.stocks import AAPL
    
    df_apple = pd.DataFrame(AAPL)
    df_apple['date'] = pd.to_datetime(df_apple['date'])
    
    #Import the required packages
    from bokeh.io import output_file, show
    from bokeh.plotting import figure
    from bokeh.plotting import ColumnDataSource
    
    #Create the ColumnDataSource object
    data = ColumnDataSource(data = {
        'x' : df_apple['high'],
        'y' : df_apple['low'],
        'x1': df_apple['open'],
        'y1': df_apple['close'],
        'x2': df_apple['date'],
        'y2': df_apple['volume'],   
    })
    
    #Adding titles to plots
    #Import the required packages
    from bokeh.plotting import figure, show, output_file
    
    #Create the plot with the title
    plot3 = figure(title = "5 year time series distribution of volumn of Apple stocks traded", title_location = "above", 
                   x_axis_type = 'datetime', x_axis_label = 'date', y_axis_label = 'Volume Traded')
    
    #Create the time series plot
    plot3.line(x = 'x2', y = 'y2', source = data, color = 'red')
    plot3.circle(x = 'x2', y = 'y2', source = data, fill_color = 'white', size = 3)
    
    #Output the plot
    output_file('title.html')
    show(plot3)
    
    image.png

    添加图例(legend)

    #Setting up the data for chapter 
    #Import the required packages
    import pandas as pd
    from bokeh.sampledata.stocks import AAPL
    
    df_apple = pd.DataFrame(AAPL)
    df_apple['date'] = pd.to_datetime(df_apple['date'])
    
    #Import the required packages
    from bokeh.io import output_file, show
    from bokeh.plotting import figure
    from bokeh.plotting import ColumnDataSource
    
    #Create the ColumnDataSource object
    data = ColumnDataSource(data = {
        'x' : df_apple['high'],
        'y' : df_apple['low'],
        'x1': df_apple['open'],
        'y1': df_apple['close'],
        'x2': df_apple['date'],
        'y2': df_apple['volume'],   
    })
    
    #Adding legends to plots
    #Import the required packages
    from bokeh.plotting import figure, show, output_file
    
    #Create the two scatter plots
    plot = figure()
    
    #Create the legends
    plot.cross(x = 'x', y = 'y', source = data, color = 'red', size = 10, alpha = 0.8, legend = "High Vs. Low")
    plot.circle(x = 'x1', y = 'y1', source = data, color = 'green', size = 10, alpha = 0.3, legend = "Open Vs. Close")
    
    #Output the plot
    output_file('5.html')
    show(plot)
    
    image.png

    颜色映射

    #Setting up the data for chapter 
    import pandas as pd
    
    #Read in the data
    df = pd.read_csv('/home/andrew/code/kaggle-code/stock_data/all_stocks_5yr.csv')
    
    df_multiple = df[(df['Name'] == 'GOOGL') | (df['Name'] == 'USB')]
    
    #Import the required packages
    from bokeh.models import CategoricalColorMapper
    from bokeh.io import output_file, show
    from bokeh.plotting import figure
    from bokeh.plotting import ColumnDataSource
    
    #Store the data in the ColumnDataSource object
    data = ColumnDataSource(df_multiple)
    
    #Create the mapper 
    category_map = CategoricalColorMapper(
        factors = ['GOOGL', 'USB'], palette = ['blue', 'red'])
    
    #Plot the figure
    plot = figure()
    plot.circle('high', 'low', size = 8, source = data, color = {'field': 'Name', 'transform': category_map})
    
    #Output the plot
    output_file('category.html')
    show(plot)
    
    image.png

    创建按钮(button)

    from bokeh.io import output_file, show
    from bokeh.layouts import widgetbox
    from bokeh.models.widgets import Button
    
    #Create the button
    button = Button(label="Click me", button_type = "success")
    
    #Output the button
    output_file("button.html")
    show(widgetbox(button))
    
    image.png

    复选框(checkbox)

    from bokeh.io import output_file, show
    from bokeh.layouts import widgetbox
    from bokeh.models.widgets import CheckboxGroup
    
    #Create the checkbox
    checkbox = CheckboxGroup(
            labels=["box: 1", "box: 2", "box: 3"], active=[1, 2])
    
    #Output the checkbox
    output_file("checkbox.html")
    show(widgetbox(checkbox))
    
    image.png

    下拉菜单(Dropdown)

    from bokeh.io import output_file, show
    from bokeh.layouts import widgetbox
    from bokeh.models.widgets import Dropdown
    
    #Create the menu
    menu = [("Option 1", "item_1"), ("Option 2", "item_2")]
    
    #Create the Dropdown
    dropdown = Dropdown(label="Dropdown Menu", button_type="warning", menu=menu)
    
    #Output the dropdown menu
    output_file("dropdown.html")
    show(widgetbox(dropdown))
    
    image.png

    单选按钮(radio)

    from bokeh.io import output_file, show
    from bokeh.layouts import widgetbox
    from bokeh.models.widgets import RadioGroup
    
    #Create the radio button 
    radio_button = RadioGroup(
            labels=["Option 1", "Option 2"], active=0)
    
    #Output the radio button widget
    output_file("radiobutton.html")
    show(widgetbox(radio_button))
    
    image.png

    滑动条(slider)

    from bokeh.io import output_file, show
    from bokeh.layouts import widgetbox
    from bokeh.models.widgets import Slider
    
    #Create the slider widget
    slider = Slider(start=0, end=50, value=0, step= 5, title="Simple Slider")
    
    #Output the slider
    output_file("slider.html")
    show(widgetbox(slider))
    
    image.png

    文本输入

    from bokeh.io import output_file, show
    from bokeh.layouts import widgetbox
    from bokeh.models.widgets import TextInput
    
    #Create the text input widget
    text_widget = TextInput(value="", title="Type your text here")
    
    #Output the text input widget
    output_file("text_input.html")
    show(widgetbox(text_widget))
    
    image.png

    悬停提示

    from bokeh.models import CategoricalColorMapper
    from bokeh.models import HoverTool
    from bokeh.io import output_file, show
    from bokeh.plotting import ColumnDataSource
    from bokeh.plotting import figure
    import pandas as pd
    
    #Read in the data and filter for Google and USB stocks
    import pandas as pd
    
    #Read in the data
    df = pd.read_csv('/home/andrew/code/kaggle-code/stock_data/all_stocks_5yr.csv')
    df_multiple = df[(df['Name'] == 'GOOGL') | (df['Name'] == 'USB')]
    
    #Create the hover tooltip
    hover_tool = HoverTool(tooltips = [
        ('Stock Ticker', '@Name'),
        ('High Price', '@high'),
        ('Low Price', '@low')
    ]) 
    
    #Save the data in a ColumnDataSource object
    data = ColumnDataSource(df_multiple)
    
    #Create the categorical color mapper
    category_map = CategoricalColorMapper(
        factors = ['GOOGL', 'USB'], palette = ['blue', 'red'])
    
    #Create the plot with the hover tooltip
    plot = figure(tools = [hover_tool])
    plot.circle('high', 'low', size = 8, source = data, color = {'field': 'Name', 'transform': category_map})
    
    #Output the plot
    output_file('hover.html')
    show(plot)
    
    image.png

    选择

    from bokeh.models import CategoricalColorMapper
    from bokeh.models import HoverTool
    from bokeh.io import output_file, show
    from bokeh.plotting import ColumnDataSource
    from bokeh.plotting import figure
    import pandas as pd
    
    #Read in the data and filter for Google and USB stocks
    import pandas as pd
    
    #Read in the data
    df = pd.read_csv('/home/andrew/code/kaggle-code/stock_data/all_stocks_5yr.csv')
    df_multiple = df[(df['Name'] == 'GOOGL') | (df['Name'] == 'USB')]
    
    #Save the data in a ColumnDataSource object
    data = ColumnDataSource(df_multiple)
    
    category_map = CategoricalColorMapper(
        factors = ['GOOGL', 'USB'], palette = ['blue', 'red'])
    
    #Create the plot with the selection tool 
    
    plot = figure(tools = 'box_select')
    
    plot.circle('high', 'low', size = 8, source = data, 
                color = {'field': 'Name', 'transform': category_map}, selection_color = 'green',
               nonselection_fill_alpha = 0.3, nonselection_fill_color = 'grey')
    
    #Output the plot
    output_file('selection.html')
    show(plot)
    
    image.png

    标题样式

    from bokeh.models import CategoricalColorMapper
    from bokeh.models import HoverTool
    from bokeh.io import output_file, show
    from bokeh.plotting import ColumnDataSource
    from bokeh.plotting import figure
    import pandas as pd
    
    #Read in the data and filter for Google and USB stocks
    import pandas as pd
    
    #Read in the data
    df = pd.read_csv('/home/andrew/code/kaggle-code/stock_data/all_stocks_5yr.csv')
    df_multiple = df[(df['Name'] == 'GOOGL') | (df['Name'] == 'USB')]
    
    #Save the data in a ColumnDataSource object
    data = ColumnDataSource(df_multiple)
    
    category_map = CategoricalColorMapper(
        factors = ['GOOGL', 'USB'], palette = ['blue', 'red'])
    
    plot = figure(title = "High Vs. Low Prices (Google & USB)")
    plot.title.text_color = "red"
    plot.title.text_font = "times"
    plot.title.text_font_style = "bold"
    plot.circle('high', 'low', size = 8, source = data, 
                color = {'field': 'Name', 'transform': category_map})
    
    #Output the plot
    output_file('title.html')
    show(plot)
    
    image.png

    轮廓样式

    from bokeh.models import CategoricalColorMapper
    from bokeh.models import HoverTool
    from bokeh.io import output_file, show
    from bokeh.plotting import ColumnDataSource
    from bokeh.plotting import figure
    import pandas as pd
    
    #Read in the data and filter for Google and USB stocks
    import pandas as pd
    
    #Read in the data
    df = pd.read_csv('/home/andrew/code/kaggle-code/stock_data/all_stocks_5yr.csv')
    df_multiple = df[(df['Name'] == 'GOOGL') | (df['Name'] == 'USB')]
    
    #Save the data in a ColumnDataSource object
    data = ColumnDataSource(df_multiple)
    
    category_map = CategoricalColorMapper(
        factors = ['GOOGL', 'USB'], palette = ['blue', 'red'])
    
    plot = figure(title = "High Vs. Low Prices (Google & USB)")
    #Configure the outline of the plot
    plot.outline_line_width = 8
    plot.outline_line_alpha = 0.8
    plot.outline_line_color = "black"
    
    #Create and output the plot
    plot.circle('high', 'low', size = 8, source = data, 
                color = {'field': 'Name', 'transform': category_map})
    
    output_file('outline.html')
    show(plot)
    
    image.png

    标签样式

    from bokeh.models import CategoricalColorMapper
    from bokeh.models import HoverTool
    from bokeh.io import output_file, show
    from bokeh.plotting import ColumnDataSource
    from bokeh.plotting import figure
    import pandas as pd
    
    #Read in the data and filter for Google and USB stocks
    import pandas as pd
    
    #Read in the data
    df = pd.read_csv('/home/andrew/code/kaggle-code/stock_data/all_stocks_5yr.csv')
    df_multiple = df[(df['Name'] == 'GOOGL') | (df['Name'] == 'USB')]
    
    #Save the data in a ColumnDataSource object
    data = ColumnDataSource(df_multiple)
    
    category_map = CategoricalColorMapper(
        factors = ['GOOGL', 'USB'], palette = ['blue', 'red'])
    
    plot = figure(title = "High Vs. Low Prices (Google & USB)")
    
    plot.xaxis.axis_label = "High Prices"
    plot.xaxis.axis_label_text_color = "green"
    plot.yaxis.axis_label = "Low Prices"
    plot.yaxis.axis_label_text_font_style = "bold"
    
    plot.circle('high', 'low', size = 8, source = data, 
                color = {'field': 'Name', 'transform': category_map})
    
    #Output the plot
    output_file('label.html')
    show(plot)
    

    可爱的python测试开发库 请在github上点赞,谢谢!
    python中文库文档汇总
    [雪峰磁针石博客]python3标准库-中文版
    [雪峰磁针石博客]python3快速入门教程
    接口自动化性能测试线上培训大纲
    python测试开发自动化测试数据分析人工智能自学每周一练
    更多内容请关注 雪峰磁针石:简书

    • 技术支持qq群: 144081101(后期会录制视频存在该群群文件) 591302926 567351477 钉钉免费群:21745728

    • 道家技术-手相手诊看相中医等钉钉群21734177 qq群:391441566 184175668 338228106 看手相、面相、舌相、抽签、体质识别。服务费50元每人次起。请联系钉钉或者微信pythontesting

    image.png

    相关文章

      网友评论

        本文标题:[雪峰磁针石博客]Bokeh数据可视化工具5视觉增强

        本文链接:https://www.haomeiwen.com/subject/lqegvftx.html