- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何自定义 X 轴以显示新的日/月/年开始的日期(或月或年,取决于所选范围)?我正在使用 CategoryDateAxis
( CreateMultiPaneStockChartsFragment example )。
我想要的:
更大的范围:
较小的范围(很容易看出新的一天从哪里开始):
我有什么:
现在我使用的是默认标签提供程序,很难看到新的日/月/年何时开始。例如。 7 天范围:
轴的构造如下:
final CategoryDateAxis xAxis = sciChartBuilder.newCategoryDateAxis()
.withVisibility(isMainPane ? View.VISIBLE : View.GONE)
.withVisibleRange(sharedXRange)
//.withLabelProvider(new TradeChartAxisLabelProviderDateTime())
.withGrowBy(0.01d, 0.01d)
.build();
我如何实现这一目标?
public static class TradeChartAxisLabelProviderDateTime extends TradeChartAxisLabelProvider {
public TradeChartAxisLabelProviderDateTime() {
super();
}
@Override
public String formatLabel(Comparable dataValue) {
if(currentRange == RANGE_1_YEAR) {
} else if(currentRange == RANGE_1_MONTH) {
} else if(currentRange == RANGE_1_DAY) {
}
String text = super.formatLabel(dataValue).toString();
return text;
}
}
最佳答案
要实现基于 VisibleRange 的标签选择,您可以使用如下代码:
public static class TradeChartAxisLabelProviderDateTime extends TradeChartAxisLabelProvider {
public TradeChartAxisLabelProviderDateTime() {
super(new TradeChartAxisLabelFormatterDateTime());
}
private static class TradeChartAxisLabelFormatterDateTime implements ILabelFormatter<CategoryDateAxis> {
private final SimpleDateFormat labelFormat, cursorLabelFormat;
private TradeChartAxisLabelFormatterDateTime() {
labelFormat = new SimpleDateFormat(CategoryDateAxis.DEFAULT_TEXT_FORMATTING, Locale.getDefault());
cursorLabelFormat = new SimpleDateFormat(CategoryDateAxis.DEFAULT_TEXT_FORMATTING, Locale.getDefault());
}
@Override
public void update(CategoryDateAxis axis) {
final ICategoryLabelProvider labelProvider = Guard.instanceOfAndNotNull(axis.getLabelProvider(), ICategoryLabelProvider.class);
// this is range of indices which are drawn by CategoryDateAxis
final IRange<Double> visibleRange = axis.getVisibleRange();
// convert indicies to range of dates
final DateRange dateRange = new DateRange(
ComparableUtil.toDate(labelProvider.transformIndexToData((int) NumberUtil.constrain(Math.floor(visibleRange.getMin()), 0, Integer.MAX_VALUE))),
ComparableUtil.toDate(labelProvider.transformIndexToData((int) NumberUtil.constrain(Math.ceil(visibleRange.getMax()), 0, Integer.MAX_VALUE))));
if (dateRange.getIsDefined()) {
long ticksInViewport = dateRange.getDiff().getTime();
// select formatting based on diff in time between Min and Max
if (ticksInViewport > DateIntervalUtil.fromYears(1)) {
// apply year formatting
labelFormat.applyPattern("");
cursorLabelFormat.applyPattern("");
} else if (ticksInViewport > DateIntervalUtil.fromMonths(1)) {
// apply month formatting
labelFormat.applyPattern("");
cursorLabelFormat.applyPattern("");
} else if (ticksInViewport > DateIntervalUtil.fromMonths(1)) {
// apply day formatting
labelFormat.applyPattern("");
cursorLabelFormat.applyPattern("");
}
}
}
@Override
public CharSequence formatLabel(Comparable dataValue) {
final Date valueToFormat = ComparableUtil.toDate(dataValue);
return labelFormat.format(valueToFormat);
}
@Override
public CharSequence formatCursorLabel(Comparable dataValue) {
final Date valueToFormat = ComparableUtil.toDate(dataValue);
return cursorLabelFormat.format(valueToFormat);
}
}
}
在update()您可以访问轴的 VisibleRange,并根据它选择标签格式,然后使用 SimpleDateFormat 来格式化日期。
但据我了解,您的情况比这更复杂,因为您无法获得允许根据当前 VisibleRange 查看新日/月/年何时开始的标签。对于这种情况,您需要根据先前格式化的值选择格式字符串,并跟踪日/月/年的变化。
关于android - SciChart TradeChartAxisLabelProvider 自定义格式显示天、月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54685363/
我正在重新设计现有功能以使用 SciChart。我需要生成的图形看起来与原始解决方案相同(或尽可能接近)。[编辑:由于可能的客户端 IP 问题,不得不编辑图像] 在屏幕截图中,您可以看到我到目前为止(
我正在使用SciCharts的SciChart API用于2D图表,我想知道是否可以从ISCIAxisCore知道最小和最大可见索引。 当可见范围更改时,我需要从对SCIVisibleRangeCha
该应用正在从蓝牙获取数据并绘制实时图形。 但是,图表经常会出现不连续性。 数据源是蓝牙模块(单独的线程),它无法将所有数据发送到 SciChart 库。坦率地说,当我在蓝牙线程中插入 Log.d()
我有一个数据系列List>我从中创建了一个 XyDataSeries .我使用以下 LabelFormatter . public class SciChartCustomLabelFormatter
在同一个数据系列上可以有不同的点标记吗?也许一些点应该使用例如交叉点标记,也许其他点应该使用椭圆点标记等。有解决办法吗? 我正在使用 SciChart 3.5 版。 最佳答案 我不确定 v3.5,但我
我正在开发 android 应用程序,我从压力传感器(连接到 arduino)接收数据并希望在 scichart 热图中显示它。我使用 IPaletteProvider 成功创建了 scichart
我已尝试在折线图(实时 FIFO)上将 AntiAliasing 设置为 true,但它似乎不起作用。还有什么我需要做的吗? 这是 XAML... 以及背后的代码...... private
我发现当图表值非常小时,Y 轴上的 AutoRange 无法正常工作。看一个例子: 工作良好(正常值): 效果不佳(小值): 我实际上可以点击几次来放大它,这是最大范围: 如你所见 AutoRange
我正在使用 SciChart在 iOS 应用程序上。 是否可以仅在点击手势时显示 SCIRolloverModifier?我想避免在拖动图表时自动显示翻转的事实。 谢谢!! 最佳答案 现在有一个如何在
有什么方法可以在 SciChart IOs 折线图上滚动时显示的工具提示中只显示一个值?有许多示例说明如何在 android 和 WPF 中执行此操作,但不适用于 IO。 最佳答案 您需要执行以下操作
我正在尝试使 X 方向网格线和刻度标签固定在可见范围的中间,无论图表是缩放还是平移。 我曾尝试为我的 xAxis 创建自定义 TickProvider: class CustomTickProvide
我在将日期附加到我的 SciChart 折线图时遇到问题。我在运行时遇到此错误。 Terminating app due to uncaught exception 'NSInvalidArgumen
我的 UI 中有一些按钮,它们必须左右平移 X 轴,以及放大或缩小。问题是它是 MVVM,所以我不能只做像 XAxis.Zoom() 这样的事情,因为 View 模型不能直接访问 View 。我可以在
我有一个 TabControl,它通过 ItemsControl 包含动态数量的图表 Pane 。 ItemsControl 的 ItemsTemplate 内部是一个单独的 ScichartSurf
如何自定义 X 轴以显示新的日/月/年开始的日期(或月或年,取决于所选范围)?我正在使用 CategoryDateAxis ( CreateMultiPaneStockChartsFragment e
假设我创建了一个类似 this 的主题。我将其命名为 ChartTheme_Normal。我将它应用到 ThemeManager 对象,如下所示: ThemeManager themeManager
我正在研究 CreateMultiPaneStockChartFragment示例,我想在用户选中/取消选中图例中的复选框时捕获事件,以便我可以隐藏/显示系列的 yAxis。假设用户取消选中 RSI
我的图表运行良好,它绘制了我需要的 11 个点,就像它应该的那样。但是,情节一出现,我就特别对前 3 点感兴趣。我想知道是否有一种方法可以让图表自动放大到绘制的前 3 个点,而不是在过程完成时查看图表
当我们点击点标记或数据点时,是否可以捕获点击事件?我可以看到 WPF 有一个 DataPointSelectionModifier,但 iOS 没有。我们的目标是在用户点击点标记时在点标记上显示弹出窗
我正在使用 Scichart for android 编写一个实时绘图应用程序。我一直在用 FastLineRenderableSeries 作为我的数据系列的包装器 但我想知道为了最大限度地提高绘图
我是一名优秀的程序员,十分优秀!