【问题标题】:How to stop barchart from hiding labels for data value 0 in Mathematica?如何阻止条形图隐藏 Mathematica 中数据值 0 的标签?
【发布时间】:2012-02-09 02:12:34
【问题描述】:

我用它来创建条形图:

BarChart[
 Reverse@data,
 BarOrigin -> Left,
 ChartLabels -> 
  Placed[{Reverse@labels, Reverse@data}, {Before, After}],
 ChartElementFunction -> "FadingRectangle"
 ]

data = {7, 10, 0, 6, 0, 3, 5} 这给了

问题是某些数据值为 0,BarChart 甚至不会为它们添加标签。相反,它留下了一个开放的空间。即使值为 0,我怎样才能让它仍然添加标签?

这是在 Mathematica 8 中使用的。

【问题讨论】:

  • 这是一个粗略的解决方法,但如果没有更好的办法,您可以使用BarChart[Reverse[data /. x_ /; x == 0 -> 10^-5], ...(即在绘图前用小数字替换零)。我使用模式x_ /; x == 0 来匹配 0 和 0.0 ...我猜 0|0.0 也会很好。

标签: wolfram-mathematica bar-chart mathematica-8


【解决方案1】:

最简单的方法是使用像data /. {(0|0.0) -> 0.00001} 这样的hack。

我认为这应该可以在不需要破解的情况下工作,因此您还应该向 support@wolfram.com 提交报告。

【讨论】:

  • 我意识到我在编辑示例数据集并绘制问题时犯了一个错误:数据集可能是实数,所以0|0.0 -> 0.00001 或类似的东西会更好。
  • @Szabolcs 好点。我添加了你的方法(在简要考虑了PossibleZeroQ...)
【解决方案2】:

怎么样

data = {7, 10, 0, 6, 0, 3, 5}

labels = ("label " ~~ ToString[#]) & /@ data

BarChart[Reverse@data, BarOrigin -> Left,
ChartLabels -> Placed[{Reverse@labels, Reverse@data}, {Axis, After}],
ChartElementFunction -> "FadingRectangle"]

似乎“之前”不起作用而“轴”起作用?

【讨论】:

  • 这看起来是最干净的解决方案,即使您仍然松开第二个标签。
【解决方案3】:

您的代码在 Windows 7 上按照 Mathematica 7 中给出的方式工作。

data = {7, 10, 0, 6, 0, 3, 5};

labels = Row[{"label",#}]& /@ data;

BarChart[
  Reverse@data,
  BarOrigin -> Left,
  ChartLabels ->
   Placed[{Reverse@labels, Reverse@data}, {Before, After}],
  ChartElementFunction -> "FadingRectangle"
]

【讨论】:

  • 我想我应该指定我使用的是 Mathematica 8。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多