BarSpacing 选项在 Mathematica 中是如何实现的?

2023-11-25

我正在尝试实现一个DateListBarChart函数,获取日期数据并输出与以下位置相同的条形图DateListPlot。如果给定相同的数据,则它们必须在相同的水平位置绘制数据,这样就可以使用组合它们Show。我发现很难获取设置BarSpacing正确,以便绘图的水平范围不会改变,并且条形图基本上保持在相同的位置。

我无法推断出正确的缩放比例,因此BarSpacing->{0.2,0.3}结果是,该组条形图可用的 x 轴长度的 20% 被该组中的条形图之间的间距占据,30% 被用作条形图组之间的间距。出于技术原因,我通过将东西传递给来做到这一点RectangleChart。根据文档,BarSpacing被视为绝对单位RectangleChart。显然,如果系列较多,间隙的绝对尺寸需要更小,并且条形需要更窄。

一些例子:

arList = FoldList[0.9 #1 + #2 &, 0.01, RandomReal[NormalDistribution[0, 1], 24]]

{0.01, 0.334557, 2.02709, 1.1878, 1.9009, 3.08604, 2.36652, 3.04111, 
3.32364, 3.22662, 3.12626, 2.59118, 1.69334, 1.21069, 0.23171, 
0.689415, -0.852649, -0.124624, 0.58604, -0.481886, 0.221074, 
-0.300329, 2.36137, 0.427789, -1.47747}

dists = RandomChoice[{3, 4}, Length[arList]]
{4, 4, 4, 3, 4, 3, 4, 3, 4, 4, 3, 4, 4, 3, 4, 4, 4, 4, 3, 4, 3, 3, 3, 3, 3}

结果是:

RectangleChart[Transpose[{dists - 0 - 0/2, arList}], 
 PlotRange -> {{0, 100}, {-2, 4}}, ChartStyle -> EdgeForm[None], 
 Frame -> True, GridLines -> Automatic, BarSpacing -> {0, 0}]

enter image description here

RectangleChart[Transpose[{dists - 0.7 - 0.5/2, arList}], 
 PlotRange -> {{0, 100}, {-2, 4}}, ChartStyle -> EdgeForm[None], 
 Frame -> True, GridLines -> Automatic, BarSpacing -> {0.7, 0.5}]

enter image description here

请注意,数据沿 x 轴跨越的距离与前面的示例不同。

当尝试绘制多个系列的图表时,它会变得更加混乱(本例中相同,用于说明)。

RectangleChart[
 Transpose[{{dists - i/2 - j/2, arList}, {dists - i/2 - j/2, 
  arList}}, {2, 3, 1}], PlotRange -> {{0, 180}, {-2, 4}}, 
 ChartStyle -> EdgeForm[None], Frame -> True, Ticks -> None, 
  GridLines -> Automatic, BarSpacing -> {i, j}]

enter image description here

我多年来一直在努力寻找正确的公式,以便BarSpacing自定义函数的设置(此处未看到)会产生正确的间距和条形宽度,以便水平绘图范围不会随着BarSpacing does.

我缺少什么?

编辑:为了回应贝利撒留,这是我要去的地方的一个例子。它可以工作,有点(条形与线不太对齐,但这可能是我正在使用的日期),但是带有堆叠条形的情况无法将条形绘制在它们应该在的位置,就像任何类型的一样条形图本身有多个系列。 (我对日期标签放置算法感到非常自豪:工作中的权力不想放弃这种外观。)

enter image description here

这是一个行不通的方法。数据应填充水平范围。 (不同宽度的条是故意的 - 它是年度和季度数据的组合。)

enter image description here

EDIT 2

我记得我为什么没用Filling in a DateListPlot像迈克·霍尼彻奇(Mike Honeychurch)的包一样绘制条形 - 如果您有除非常细的条形以外的任何东西,它们最终会将顶部边缘放在错误的位置。

DateListPlot[{dateARList}, 
 PlotStyle -> {AbsolutePointSize[6], Yellow}, Filling -> {1 -> 0}, 
 FillingStyle -> {1 -> {{AbsoluteThickness[12], Darker[Red, 0.25]}}}, 
 PlotRange -> All]

enter image description here


也许使用ChartElementFunction选项而不是BarSpacing有帮助。例如barplot在代码中将绘制一个条形图,每个条形的边距为gapl在左边和gapr在右边的地方gapl and gapr是条形总宽度的分数

scale[{{xmin_, xmax_}, {ymin_, ymax_}}, {gapl_, gapr_}] :=
 {{xmin (1 - gapl) + xmax gapl, ymin}, {xmax (1 - gapr) + xmin gapr, ymax}}

barplot[dists_, arList_, {gapl_, gapr_}, opts___] := 
 RectangleChart[Transpose[{dists, arList }], opts, 
  Frame -> True, 
  GridLines -> Automatic, BarSpacing -> 0,
  ChartElementFunction -> (Rectangle @@ scale[#, {gapl, gapr}] &)]

Usage:

绘制没有间隙的原始条形图

barplot[dists, arList, {0, 0}]

rectangle chart with no gaps

这将绘制一个两侧边距为 0.2 的条形图,这会导致条形图的间隙为条形总宽度的 0.4 倍。请注意,条形的位置与第一图中的位置相匹配。

barplot[dists, arList, {0.2, 0.2}]

barchart with gaps

您可以通过执行类似的操作来绘制多个系列

Show[barplot[dists, arList 0.9, {0, 0.5}],
 barplot[dists, arList 0.8, {0.5, 0}, ChartStyle -> LightGreen]] 

two series in one plot

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

BarSpacing 选项在 Mathematica 中是如何实现的? 的相关文章

  • 如何默认显示动画控件

    在mathematica中这个简单的控制对象中 如下所示 Control x 0 1 我们必须将鼠标指针移至对象的右上角才能获得名为 显示动画控件 的提示 然后单击它以查看播放 前进等动画控件 有没有办法通过设置一些选项来默认情况下打开所有
  • 再现频率矩阵图

    我想在 R 中重新创建一个情节 情节如下 来源 Boring E G 1941 作为动态平衡的统计频率 心理学评论 48 4 279 这略高于我的工资等级 能力 因此在这里询问 无聊的状态 第一次 A 只能出现 从不 0 或 总是 1 在
  • 如何仅注释堆积条形图的一个类别

    我有一个数据框示例 如下所示 data Date 2021 07 18 2021 07 19 2021 07 20 2021 07 21 2021 07 22 2021 07 23 Invalid NaN 1 1 NaN NaN NaN N
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • 带表格格式的 Matplotlib 条形图

    我在图的底部添加了一个表格 但它存在许多问题 右边的内边距太多了 左边的填充太少 底部没有填充物 单元格对于其中的文本来说太小 该表距离图的底部太近 属于行名称的单元格的颜色未与条形图的颜色相匹配 我要发疯了 去摆弄这个 有人可以帮我解决这
  • 自动保存笔记本(或mathematica中的其他类型文件)文件

    我现在有时会遇到这个问题 部分原因是 Microsoft Office 自动保存您正在使用版本和自动恢复处理的文件 很多时候 当我在mathematica中启动一个新笔记本来做一些测试或其他事情时 我经常忘记保存我正在做的事情 时不时地 根
  • 如何根据 ggplot2 中的汇总数据创建堆积条形图

    我正在尝试使用 ggplot 2 创建堆积条形图 我的宽格式数据如下所示 每个单元格中的数字是响应的频率 activity yes no dontknow Social events 27 3 3 Academic skills works
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 使用 R 将图例添加到绘图中

    我使用 R 在一个图中创建了 4 条线 这是代码 Define 2 vectors cars lt c 123 07 110 51 96 14 98 71 101 3 trucks lt c 110 31 89 91 89 81 89 31
  • 导出绘图变量显示空白图像

    我正在使用 JRI 进行 java 和 R 集成 请找到下面的脚本 String path C Users hrpatel Desktop CSVs DataNVOCT csv rengine eval library tseries re
  • 如何使用 2 个不同的 y 轴进行绘图?

    我想在 R 中叠加两个散点图 以便每组点都有自己的 不同的 y 轴 即在图上的位置 2 和 4 中 但这些点看起来叠加在同一个图上 是否可以这样做plot Edit显示问题的示例代码 example code for SO question
  • 将纬度/经度转换为 X/Y,以便在美国地图图像上进行阿尔伯斯投影

    我正在尝试使用 C 或 Javascript 将纬度 经度转换为 X Y 坐标 以将带有 CSS 的 div 左 上 定位到美国地图的背景图像上 美国的标准地图投影是阿尔伯斯投影 如下所示 但 StackOverflow 仅提供参考基本墨卡
  • 清理 tan(x) 的图

    我想形象化的根源tan xi tanh xi xi gt 0和我的情节 plot tan pi xi tanh pi xi xi 0 4 ylim 1 2 像这样出来 在那里人们看到真正的根源 xi i approx pi n 1 4 n
  • 我需要在条形图中显示 HTML/Js 页面的 Div 结果?

    我需要在条形图中显示下面提到的代码的结果 是否可以显示下面代码的结果以供调查显示在条形图中 所以我按照几个伙伴的建议将代码放在这里 您可以在代码中看到我正在打印调查结果 但我也想显示蜘蛛图 但我不知道如何继续 您可以检查这个问题中的代码 h
  • ArrayPlot 中的自定义 ColorFunction/ColorData(以及类似函数)

    这与西蒙有关关于更改默认 ColorData 的问题 https mathematica stackexchange com q 4712 121在数学中 虽然解决方案都解决了改变的问题ColorData在线图中 我不太发现讨论对改变Col
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • 使用 matplotlib.animation 从 CSV 文件实时绘图 - 数据绘制到第一个输入错误

    我正在尝试绘制来自不断写入 CSV 文件的传感器的数据 虽然成功创建实时绘图 但每个新数据条目都会创建一条延伸到第一个数据条目的附加线 见下文 Python 3 4 脚本 import matplotlib pyplot as plt im

随机推荐

  • 如何使用 Swift iOS 将字符串中的每个单词大写

    是否有一个函数可以将字符串中的每个单词大写 或者这是一个手动过程 例如 鲍勃很高 我想要 鲍勃很高 肯定有一些东西 但我发现的 Swift IOS 答案似乎都没有涵盖这一点 您在寻找吗capitalized 讨论每个单词中第一个字符更改为相
  • Linux 的 hrtimer - 微秒精度?

    是否可以在 Linux 主机上以微秒精度执行任务 即 我想在特定的时刻执行任务 我知道 Linux 不是实时系统 但我正在寻找 Linux 上的最佳解决方案 到目前为止 我已经创建了一个内核模块 设置了 hrtimer 并测量了输入回调函数
  • 如何在 swift 2 命令行工具中创建最小守护进程?

    我正在尝试做什么 我想运行一个守护进程来监听 OSX 系统事件 例如NSWorkspaceWillLaunchApplicationNotification in an command line toolxcode 项目 那可能吗 如果没有
  • SQL Server 忽略 where 表达式中的大小写

    如何构造 where 子句不区分大小写的 SQL 查询 MS SQL Server SELECT FROM myTable WHERE myField sOmeVal 我希望结果返回时忽略此情况 在 SQL Server 数据库的默认配置中
  • 如何使用 JQuery 获取

    如何使用 Jquery 或 javascript 获取选择组件值 MyJSF 代码如下
  • 从 Windows 脚本发送邮件

    我想通过 Windows Server 2003 标准版上的脚本发送邮件 我认为服务器设置几乎是开箱即用的 邮件服务器是 Exchange 邮件服务器 当您位于内部网络时 您可以使用普通的旧式 SMTP 我已经在我的机器上使用 Perl 完
  • iPhone核心数据模拟器

    我创建了一个使用核心数据的应用程序 有没有办法在模拟器上查看sqlite db 也许有一个工具可以允许在模拟器上查询 sqlite 数据库 就像数据浏览器一样 有没有办法浏览 iPhone 模拟器到 sqlite 数据库位置 对于 Xcod
  • 无法读取未定义的属性“debugHosts”

    我在尝试将 Realm 与 RN 0 29 一起使用时收到此错误 来自 Chrome 的堆栈跟踪 Cannot read property debugHosts of undefined handleException Exceptions
  • 如何在 Grails 1.3.7 中记录 sql

    我尝试在数据源 测试环境 中使用 logSql true 配置 grails 中的 sql 日志 但测试输出中没有显示任何内容 我读了这篇文章 但它不起作用 如何在 Grails 中记录 SQL 语句 Thanks 我们在 Config g
  • 如何在 PostgresQL 中显示所有无效对象

    寻找视图我可以列出 PostgreSQL 中所有 无效 对象 在 Oracle 中 我们可以使用 dab objects status 列 但我不确定在 PostgreSQL 中是否有一种简单的方法可以做到这一点 也许 我可以用下面的代码检
  • 使用 python 将图像复制到 MacOS 剪贴板

    我想在 Mac OS 上将图像 PIL 图像 复制到剪贴板 我尝试了几十种不同的方法来做到这一点 大多数 python 剪贴板模块 如 pyclip 或 Clipboard 不支持图像 我找到了一个在 Windows 上执行此操作的代码 但
  • 无法解释的 C++ 默认 int 值

    我一直在重构一些代码 我注意到一些涉及未初始化 int 数组的奇怪行为 int arr ARRAY SIZE 我设置了一个断点 似乎所有值都默认为 858993460 这个值有什么特别的吗 有什么想法为什么它们不默认为 0 吗 858993
  • 根据序列中缺失的数字拆分列表

    我正在寻找最Pythonic的方法 根据序列中缺少的数字将数字列表拆分为更小的列表 例如 如果初始列表是 seq1 1 2 3 4 6 7 8 9 10 该函数将产生 1 2 3 4 6 7 8 9 10 or seq2 1 2 4 5 6
  • 如何在 UWP c# 中使用 DataTable 内容填充 DataGrid

    我正在创建一个 UWP 应用程序 并尝试使用包含数据库中数据的 DataTable 填充我的 DataGrid 但没有成功 我已经寻找解决方案 但无法摆脱该错误 XAML 代码
  • 如果 Visual Studio 2010 中属性窗口的描述框被隐藏,如何显示它?

    如果 Visual Studio 2010 中属性窗口的描述框被隐藏 如何显示它 例如 下图显示了描述框 它显示为 加载 每当用户加载表单时发生 我遇到了同样的问题 这是由于描述框长度被拖为零引起的 为了解决这个问题 我必须取消固定属性框并
  • 如何检查是否在 Cygwin、Mac 还是 Linux 中运行?

    我有一个可在 Windows Cygwin 以及 Mac 和 Linux 上使用的 shell 脚本 每个版本需要稍微不同的变量 shell bash 脚本如何检测它是在 Cygwin Mac 还是 Linux 中运行 通常 uname及其
  • 在 Intellij Idea 中找不到符号“var”

    每当我尝试从 Intellij Idea 运行我的应用程序时 我都会收到以下错误 如果我通过 Maven 构建应用程序 它就可以正常工作 看一下我的模块设置 JDK 是 v10 项目和模块的语言也是 v10 知道为什么会发生这种情况吗 我不
  • 如何有效地从字节中读取位?

    我正在开发一个包含 WebSockets 的项目 服务器 Node js 和客户端 Chrome 之间的数据是使用我设置的用于数据交换的自定义 非常简单 格式发送的 我以 3 位为单位发送数据 因为我发送的项目都有 8 种可能性 数据格式如
  • Hibernate - 批量更新从更新返回意外行数:0 实际行数:0 预期:1

    我收到以下休眠错误 我能够识别导致问题的功能 不幸的是 该函数中有多个数据库调用 由于休眠在事务结束时刷新会话 我无法找到导致问题的行 下面提到的休眠错误看起来像是一般错误 它甚至没有提到哪个 Bean 导致了这个问题 有人熟悉这个休眠错误
  • BarSpacing 选项在 Mathematica 中是如何实现的?

    我正在尝试实现一个DateListBarChart函数 获取日期数据并输出与以下位置相同的条形图DateListPlot 如果给定相同的数据 则它们必须在相同的水平位置绘制数据 这样就可以使用组合它们Show 我发现很难获取设置BarSpa