【问题标题】:Exponential tick on linear yAxis - JFreeChart线性 yAxis 上的指数刻度 - JFreeChart
【发布时间】:2017-04-11 14:47:15
【问题描述】:

我有一个带有对数 yAxis 的图表,如下所示:

正如我们所见,yAxis 具有指数刻度(我使用yAxis.setExpTickLabelsFlag(true); 设置它)。这是带有线性轴的相同图表(创建xylineChart 时默认使用的图表):

不幸的是,我在 yAxis 上的值不能用指数刻度格式化,因为它不是 LogarithmicAxis。我怎样才能强迫它?

【问题讨论】:

  • NumberAxis::setNumberFormatOverride?
  • @trashgod 这似乎是实现它的方法,谢谢。我使用了yAxis.setNumberFormatOverride(new DecimalFormat("0.######E0"));,但我想将指数设置为像1e5 这样的小写字母。将E 替换为e 会给我一个非法参数错误。顺便说一句,不要犹豫,将其发布为答案,以便我可以将其标记为解决方案。
  • @trashgod 或者将logarithmicAxis 的刻度设为大写。我想要一些对称的东西。

标签: java jfreechart exponential yaxis


【解决方案1】:

如图here,您可以调用setNumberFormatOverride()来设置所需的DecimalFormat。您可以调用DecimalFormatSymbolssetExponentSeparator() 方法来设置所需的指数分隔符。

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setExponentSeparator("e");
DecimalFormat format = new DecimalFormat("0.######E0", symbols);
yAxis.setNumberFormatOverride(format);

或者,您应该能够在setupNumberFmtObj() 的自定义实现中修改LogarithmicAxisnumberFormatterObj,见here,但我还没有尝试过。

【讨论】:

  • 非常感谢,这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 2012-12-12
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多