绘图表达进阶操作

① 轴线设置
② 浮动设置
③ 多图表设置

1. 轴线标签设置

设置字符串

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline import warnings
warnings.filterwarnings('ignore')
# 不发出警告 from bokeh.io import output_notebook
output_notebook()
# 导入notebook绘图模块 from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSource
# 导入图表绘制、图标展示模块
# 导入ColumnDataSource模块

figure(x_range=name, y_range=(60,100), plot_height=350, title="考试成绩",tools="")
p.circle(x = 'name', y = 'score', source = source,
size = 20, line_color = 'black', line_dash = [6,4],
fill_color = 'red',fill_alpha = 0.8)
# 1、轴线标签设置
# 设置字符串 df = pd.DataFrame({'score':[98,86,74,67,87]},index = ['小明','小王','小张','小红','小红帽'])
df.index.name = 'name'
print(df)
# 创建数据 source = ColumnDataSource(df)
# 讲数据转化为ColumnDataSource对象 name = df.index.tolist() # 提取name
print(name)
p = figure(x_range=name, y_range=(60,100), plot_height=350, title="考试成绩",tools="")
# 通过x_range设置横轴标签,这里提取成list p.circle(x = 'name', y = 'score', source = source,
size = 20, line_color = 'black', line_dash = [6,4],
fill_color = 'red',fill_alpha = 0.8) show(p)

--->>>

      score
name
小明 98
小王 86
小张 74
小红 67
小红帽 87
['小明', '小王', '小张', '小红', '小红帽']

设置时间序列

# 1、轴线标签设置  时间序列设置
# Dataframe DatetimeIndex + x_axis_type from bokeh.sampledata.commits import data
print(data.head())
print(type(data.index))#datetime是个时间序列
# 导入数据,查看数据
# 这里index为时间序列 DAYS = ['Sun', 'Sat', 'Fri', 'Thu', 'Wed', 'Tue', 'Mon']
source = ColumnDataSource(data)
# 转化为ColumnDataSource对象 p = figure(plot_width=800, plot_height=600,
y_range=DAYS, # 设置图表的y轴刻度分类
x_axis_type='datetime', # 设置x轴类型 → 时间序列
title="Commits by Time of Day (US/Central) 2012-2016") p.circle(x='time', y='day', source=source, alpha=0.2) #如果把x='datetime',放大会显示时间每个年月时刻/
# 生成散点图 p.ygrid.grid_line_color = None
# 设置其他参数 show(p)

设置对数坐标轴

# 1、轴线标签设置
# 设置对数坐标轴 x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
y = [10**xx for xx in x]
# 创建数据 p = figure(plot_width=400, plot_height=400,
y_axis_type="log") #如果不设置y_axis_type = "log"就是一个对数的展示;
# y_axis_type="log" → 对数坐标轴 p.line(x, y, line_width=2)
p.circle(x, y, fill_color="white", size=8) show(p)

2. 浮动设置

# 2、浮动设置(多了个在上下空间的浮动)
# Jitter
# 参考文档:https://bokeh.pydata.org/en/latest/docs/reference/transform.html from bokeh.transform import jitter DAYS = ['Sun', 'Sat', 'Fri', 'Thu', 'Wed', 'Tue', 'Mon']
source = ColumnDataSource(data)
# 转化为ColumnDataSource对象 p = figure(plot_width=800, plot_height=600,
y_range=DAYS, # 设置图表的y轴刻度分类
x_axis_type='datetime', # 设置x轴类型 → 时间序列
title="Commits by Time of Day (US/Central) 2012-2016",
tools = 'hover') #会对每个点进行识别 p.circle(x='time',
y=jitter('day', width=0.6, range=p.y_range),
source=source, alpha=0.3)
# jitter参数 → 'day':第一参数,这里指y的值,width:间隔宽度比例,range:分类范围对象,这里和y轴的分类一致 p.ygrid.grid_line_color = None
# 设置其他参数 show(p)

3. 多图表设置

# 3、多图表设置(通过范围做的一个共享数据)
# gridplot from bokeh.layouts import gridplot
# 导入gridplot模块 x = list(range(11))
y0 = x
y1 = [10-xx for xx in x]
y2 = [abs(xx-5) for xx in x]
# 创建数据 #当这些数据用的是一组数据的时候就会形成联动,主要就是设置x_range=s1.x_range, y_range=s1.y_range,如果把s2 s3里里边去掉就不是用的一个数据了就不会产生联动 s1 = figure(plot_width=250, plot_height=250, title=None) #这个类似就是子图,在x_range和y_range上做一个共享
s1.circle(x, y0, size=10, color="navy", alpha=0.5)
# 散点图1 s2 = figure(plot_width=250, plot_height=250, x_range=s1.x_range, y_range=s1.y_range, title=None) #如果设置了tools='box_select'以放大筛选时不会有联动,但在移动时候会有联动
s2.triangle(x, y1, size=10, color="firebrick", alpha=0.5)
# 散点图2,设置和散点图1一样的x_range/y_range → 图表联动 s3 = figure(plot_width=250, plot_height=250, x_range=s1.x_range, title=None)
s3.square(x, y2, size=10, color="olive", alpha=0.5)
# 散点图3,设置和散点图1一样的x_range/y_range → 图表联动 p = gridplot([[s1, s2, s3]]) #把这3个图全部集合,做一个联动;
#p = gridplot([[s1, s2], [None, s3]])
# 组合图表 show(p) #show(s1) show(s2) show(s3) 这样就不会产生联动了,去掉p = gridplot那个

# 3、多图表设置(共享一个数据)
# gridplot x = list(range(-20, 21))
y0 = [abs(xx) for xx in x]
y1 = [xx**2 for xx in x]
source = ColumnDataSource(data=dict(x=x, y0=y0, y1=y1)) #把数据转换成ColumnDataSource,共享数据,同一个数据源
# 创建数据 TOOLS = "box_select,lasso_select,help" left = figure(tools=TOOLS, plot_width=300, plot_height=300, title=None)
left.circle('x', 'y0', source=source) # 散点图1 left和right设置了同一个source right = figure( plot_width=300, plot_height=300, title=None) #如果把tools=TOOLS去掉, 就是没有共享范围,在筛选放大时就不会有联动了;但由于用的是同一个数据,在移动时还说有联动
right.circle('x', 'y1', source=source) # 散点图2
# 共用一个ColumnDataSource p = gridplot([[left, right]])
# 组合图表 show(p)

Python交互图表可视化Bokeh:6. 轴线| 浮动| 多图表的更多相关文章

  1. Python交互图表可视化Bokeh:1. 可视交互化原理| 基本设置

    Bokeh pandas和matplotlib就可以直接出分析的图表了,最基本的出图方式.是面向数据分析过程中出图的工具:Seaborn相比matplotlib封装了一些对数据的组合和识别的功能:用S ...

  2. Python交互图表可视化Bokeh:5 柱状图| 堆叠图| 直方图

    柱状图/堆叠图/直方图 ① 单系列柱状图② 多系列柱状图③ 堆叠图④ 直方图 1.单系列柱状图 import numpy as np import pandas as pd import matplo ...

  3. Python交互图表可视化Bokeh:7. 工具栏

    ToolBar工具栏设置 ① 位置设置② 移动.放大缩小.存储.刷新③ 选择④ 提示框.十字线 1. 位置设置 import numpy as np import pandas as pd impor ...

  4. Python交互图表可视化Bokeh:4. 折线图| 面积图

    折线图与面积图 ① 单线图.多线图② 面积图.堆叠面积图 1. 折线图--单线图 import numpy as np import pandas as pd import matplotlib.py ...

  5. Python交互图表可视化Bokeh:3. 散点图

    散点图 ① 基本散点图绘制② 散点图颜色.大小设置方法③ 不同符号的散点图 1. 基本散点图绘制 import numpy as np import pandas as pd import matpl ...

  6. Python交互图表可视化Bokeh:2. 辅助参数

    图表辅助参数设置 辅助标注.注释.矢量箭头 参考官方文档:https://bokeh.pydata.org/en/latest/docs/user_guide/annotations.html#col ...

  7. Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?

    Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢? 可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的.对于初学者来说,很容易被这官网上 ...

  8. 开源来自百度商业前端数据可视化团队的超漂亮动态图表--ECharts

    开源来自百度商业前端数据可视化团队的超漂亮动态图表--ECharts 本人项目中最近有需要图表的地方,偶然发现一款超级漂亮的动态图标js图表控件,分享给大家,觉得好用的就看一下.更多更漂亮的演示大家可 ...

  9. Python绘图与可视化

    Python有很多可视化工具,本篇只介绍Matplotlib. Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本.IPython的交互环境下.Web应用 ...

随机推荐

  1. JQery插件zClip ----实现粘贴复制功能

    使用了这个插件,但是用在table,td中话,我是一个列表来的,对此使用此插件还是有点问题的?点击其中的一个会全部都被选中. <script type="text/javascript ...

  2. [C]关于extern与struct

    问题 我曾经很困惑,就是在两个编译单元当中,如何把一个单元中声明的struct结构引入到另外一个单元中来,折腾了很久,后来发现这位大神的留言 不是这么用的…… 类型的定义和类型变量的定义不同,类型定义 ...

  3. 驳2B文 "我为什么放弃Go语言"

      此篇文章流传甚广, 其实里面没啥干货, 而且里面很多观点是有问题的. 这个文章在 golang-china 很早就讨论过了. 最近因为 Rust 1.0 和 1.1 的发布, 导致这个文章又出来毒 ...

  4. Confluence 6 CSS 指南:修改顶部背景

    Confluence 默认页面的顶部是有关站点的菜单连接,在这里定义了 快速连接, 浏览菜单,用户菜单和快速查找输入框.在这个示例中,我们将会尝试修改顶部的菜单部分的背景和一些自定义的图片. 创建一个 ...

  5. D3.js 使用缩放zoom时节点无法拖动,只能整体移动的问题

    .on("dragstart", function() { d3.event.sourceEvent.stopPropagation(); }) https://stackover ...

  6. Python基础之面向对象的软件开发思路

    当我们来到生产环境中的时候,对一个软件需要开发的时候,刚开始也可能会懵逼,挝耳挠腮.不知从何下手,其 实,大家也不要苦恼,这是大多数程序员都会遇到的问题.那么,我们就要想一想了,既然大家都会这样,到低 ...

  7. linux 基础知识(三)

    抽空把Linux的一些基础的东西再补充一下,安全的东西真的很多都是要自己不断的学习,很多还是今天学习了一点时间过后不用就会忘记.所以学习的东西就是要不断地往复. 有时候感觉有时候快就是慢,慢就是快. ...

  8. django----利用Form 实现两次密码输入是否一样 ( 局部钩子和全局钩子 )

    from django import forms # 导入表单模块 from django.core.exceptions import ValidationError class RegisterF ...

  9. Python if __name__ == '__main__':(以主程序形式执行)

    在外部调用某个模块时,可能会将只能在本模块执行的代码给执行了,有没有什么办法让某些特定的代码指定只能在自身运行时才执行被调用时不执行呢?使用if __name__ == '__main__':. 示例 ...

  10. Java 把一个文本文档的内容复制到另一个文本文档

    src.txt放在工程目录下,dest.txt可创建,也可不创建.一旦运行程序,如果dest.txt不存在,将自行创建这个文本文档,再将src.txt中的内容复制到dest.txt import ja ...