如何使用 Plotly 制作带有滑块的分区统计图?

2023-11-30

我正在重新创建等值线示例并尝试添加一个滑块,拖动该滑块时,该滑块会逐年变化。另一位用户问了一个类似的问题但他们没有收到回复。我做了更多搜索并找到了一个example用户生成了额外年份的随机值并创建了一个滑块,但它是用 JavaScript 编写的,我不确定如何将其转换为 Python。

这是 JavaScript 代码:

Plotly.d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv', function(err, rows){
  function unpack(rows, key) {
    return rows.map(function(row) { return row[key]; });
  }

  var randomize = z => z.map(d => Math.pow(Math.random(), 2) * 30000);
  var data = unpack(rows, 'total exports');
  var frames = [{
    data: [{z: unpack(rows, 'total exports')}],
    traces: [0],
    name: '1990',
    layout: {title: '1990 US Agriculture Exports by State'}
  }, {
    data: [{z: randomize(data)}],
    traces: [0],
    name: '1995',
    layout: {title: '1995 US Agriculture Exports by State'}
  }, {
    data: [{z: randomize(data)}],
    traces: [0],
    name: '2000',
    layout: {title: '2000 US Agriculture Exports by State'}
  }, {
    data: [{z: randomize(data)}],
    traces: [0],
    name: '2005',
    layout: {title: '2005 US Agriculture Exports by State'}
  }]

  var data = [{
    type: 'choropleth',
    locationmode: 'USA-states',
    locations: unpack(rows, 'code'),
    z: unpack(rows, 'total exports'),
    text: unpack(rows, 'state'),
    zmin: 0,
    zmax: 17000,
    colorscale: [
      [0, 'rgb(242,240,247)'], [0.2, 'rgb(218,218,235)'],
      [0.4, 'rgb(188,189,220)'], [0.6, 'rgb(158,154,200)'],
      [0.8, 'rgb(117,107,177)'], [1, 'rgb(84,39,143)']
    ],
    colorbar: {
      title: 'Millions USD',
      thickness: 0.2
    },
    marker: {
      line:{
        color: 'rgb(255,255,255)',
        width: 2
      }
    }
  }];


  var layout = {
    title: '1990 US Agriculture Exports by State',
    geo:{
      scope: 'usa',
      showlakes: true,
      lakecolor: 'rgb(255,255,255)'
    },
    xaxis: {autorange: false},
    yaxis: {autorange: false},
    sliders: [{
      currentvalue: {
        prefix: 'Year: ',
      },
      steps: frames.map(f => ({
        label: f.name,
        method: 'animate',
        args: [[f.name], {frame: {duration: 0}}]
      }))
    }]
  };

  Plotly.plot('graph', {
    data: data,
    layout: layout,
    frames: frames,
    config: {showLink: false}
  });
});

有没有办法在Python中做到这一点?


下面的代码实际上是等值线的精简版本example对于 Python 和sliders code.

随机数据是根据第一个数据创建的,每个滑块条目显示数据列表的不同部分。

import pandas as pd
import plotly
import numpy as np

plotly.offline.init_notebook_mode()
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv')

data = [dict(type='choropleth',
             locations = df['code'].astype(str),
             z=df['total exports'].astype(float),
             locationmode='USA-states')]

# let's create some additional, random data
for i in range(5):
    data.append(data[0].copy())
    data[-1]['z'] = data[0]['z'] * np.random.rand(*data[0]['z'].shape)

# let's create the steps for the slider
steps = []
for i in range(len(data)):
    step = dict(method='restyle',
                args=['visible', [False] * len(data)],
                label='Year {}'.format(i + 1980))
    step['args'][1][i] = True
    steps.append(step)

sliders = [dict(active=0,
                pad={"t": 1},
                steps=steps)]    
layout = dict(geo=dict(scope='usa',
                       projection={'type': 'albers usa'}),
              sliders=sliders)

fig = dict(data=data, 
           layout=layout)
plotly.offline.iplot(fig)

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Plotly 制作带有滑块的分区统计图? 的相关文章

  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 用于选择特定 div 中具有特定类的锚元素的 jQuery 选择器是什么

    我有一些这样的代码 我想选择每个 a 带有类的标签status在 div 中foo div a class status a div 你可以这样做 foo find status a
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • 检查数组中是否存在多个变量之一

    array a b c d vars a f g foreach vars as var if in array var array return true else return false 我如何检查是否其中之一 vars存在于 arr
  • C#中如何将字符串转换为整数

    在 C 中如何将字符串转换为整数 如果您确定它会正确解析 请使用 int Parse string 如果你不是 请使用 int i bool success int TryParse string out i Caution 在下面的例子中
  • 在多线程 Java 应用程序中调用已编译的 m 文件(.jar)时出错

    我有一个简单的m文件 function fRate Height Width media filename obj mmreader filename fRate obj FrameRate Width obj Width Height o
  • 在没有 NodeJS 的情况下使用 EJS

    我认为最新的构建版本将允许我在不使用 Node 的情况下全局使用 ejs 所以我尝试这样做 不过 当我尝试使用 ejs renderFile params 时 我收到错误 TypeError exports fileLoader is no
  • $http 问题 - 在 md-autocomplete Angular Material 中解决承诺之前无法返回值

    我正在使用角度材质md autocomplete在我的项目中 我通过 ajax 调用从服务主机获取建议列表 http服务 Issue http 问题 在承诺之前无法返回值 解决于md autocomplete角材料 我的要求 我需要使用远程
  • WPF 中的高性能绘图控制

    我正在做一些工作 我需要开发一个控件 它应该是一个简单的图表 显示几个点和两条边 我的问题是我需要显示最多 16k 点 更新率为 30 Hz 有没有人做过类似的事情 有什么建议吗 例如 是否从 FrameworkElement 或 Cont
  • Swift:泛型重载,“更专业”的定义

    在下面的例子中 为什么foo f 叫暧昧 我知道第二个重载也可以适用P 但为什么第一个不被认为更专业 因此是更好的匹配 func foo
  • 为什么原来的任务在继续其他任务时被取消了?

    自从我投入 C 编程以来已经 4 周了 确实很有趣 但是 我感到很痛苦 当我开始任务时HttpClient PostAsync 单独使用 效果很好 但如果我继续做其他事情 原来的任务将被取消 而不是由我取消 看起来该任务对继续进行并不满意
  • PHP - 间接修改重载属性

    我知道这个问题已经被问过好几次了 但他们都没有提供解决方法的真正答案 也许有一个适合我的具体情况 我正在构建一个使用魔术方法的映射器类 get 延迟加载其他对象 它看起来像这样 public function get index if is
  • 使用数组过滤对象数组,无需嵌套循环js

    我一直在试图找出在不使用嵌套循环的情况下过滤对象数组的最干净的方法 我找到了这个post using filter关于使用另一个数组过滤数组的函数 但我无法弄清楚如何使用相同的模式实际访问对象数组中的对象内的正确键 给定以下对象数组 tec
  • Kendo UI 重新加载树视图

    我通过 ajax 使用 kendo ui 加载一个复杂的树视图 因为我需要通过一个请求加载树 工作正常 document ready function buildTree function buildTree getJSON admin g
  • 使用 jQuery 延迟更改 insideHTML 文本

    所以我有一个非常简单的按钮 基本上可以打开和关闭表单 我们将在我们的网站上使用它 因为我们正在进行更新并希望在任何页面上提供反馈 这是我迄今为止拥有的 jQuery
  • 具有不同时间戳的重复条目

    我有一个按姓名列出的客户表 Customer SCD在 SQL 中 我其中有 3 列 Customer Name Customer ID Customer TimeStamp 该表中存在不同的重复条目时间戳 例如 ABC 1 2012 12
  • 如何在 ggplot2 中绘制(复杂的)堆叠条形图,无需复杂的手动数据聚合

    我想绘制一个 多面的 堆叠条形图 其中 X 轴以百分比表示 频率标签也显示在条中 经过相当多的工作并查看了 stackoverflow 上的许多不同问题后 我找到了如何使用 ggplot2 解决此问题的解决方案 但是 我不直接使用 ggpl
  • 多维数组转 CSV

    我得到这个数组 array cat gt array 0 gt array name gt Sales url gt http videos volkswagen nl videos videos subs gt array 0 gt ar
  • jQuery toggle() 方法的最佳替代方法?

    jQuery 不推荐使用toggle 方法 这是一种很容易切换类的方法 在搜索 stackoverflow 时 我发现了各种其他方法来完成相同的任务 支持 eventData 的 jQuery toggle 方法的替代方法 哪个 jQuer
  • 为什么在 char 变量中存储 255 在 C 中其值为 -1?

    我正在看一本C书 作者提到了一段文字 if ch a char variable is a signed type then storing 255 in the ch variable gives it the value 1 谁能详细说
  • UTC 时间重置为 2000-01-01 (ruby)。如何防止时间重置?

    我正在使用任务和电子表格 gem 将 Excel 电子表格读入我的数据库 我正在阅读的专栏之一是 start time 为此 我将形成一个值数组 然后逐一传入每个数组值 cnum array for start times sheet1 e
  • ASP.Net MVC 更新下拉选择上的 ViewModel 已更改

    起初我对网络开发完全是新手 我正在尝试开发一个由单个页面组成的 Web 应用程序 我从一个空项目开始尝试遵循 mvc 模式 为了填充我的视图 我通过我的 HomeController 将 ViewModel 传递到我的 Home 视图 现在
  • 如何使用 Plotly 制作带有滑块的分区统计图?

    我正在重新创建等值线示例并尝试添加一个滑块 拖动该滑块时 该滑块会逐年变化 另一位用户问了一个类似的问题但他们没有收到回复 我做了更多搜索并找到了一个example用户生成了额外年份的随机值并创建了一个滑块 但它是用 JavaScript