2 个 y 轴不同但 x 轴相同但范围不同的核心图

Posted

技术标签:

【中文标题】2 个 y 轴不同但 x 轴相同但范围不同的核心图【英文标题】:2 core-plot graphs with different y axes but the same x axis but with different ranges 【发布时间】:2015-05-12 07:01:04 【问题描述】:

我有 2 个数据集,它们都使用 x 轴上的日期范围。一个有整个日期范围的数据,而另一个只有 范围的一部分。 (它们在左右使用独立的 y 轴,效果很好。)例如:

    131 个数据点发生在 2015 年 1 月 1 日到 2015 年 5 月 1 日之间 从 2015 年 4 月 15 日到 2015 年 5 月 1 日发生的 10 个数据点

我希望仅在日期的上限范围内绘制与 #2 叠加的图。

我目前根据 #1 中的 131 个数据点自行为 x 轴创建数据标签。

由于#2 只有 10 个数据点,我需要将其映射到 x 轴上 131 个位置中与其日期对应的 10 个位置。我在 numberForPlot 中使用了一个数组,该数组包含 #2 的 10 个数据点与 #1 设置的正确 x 轴位置之间的映射。

    if ([(NSString *)plot.identifier isEqualToString:@"Pounds"]) 
    switch (fieldEnum) 
        case CPTScatterPlotFieldX:
            return [NSNumber numberWithUnsignedInteger:self.xAxisMapping[index]];
            break;

        case CPTScatterPlotFieldY:
        
            PlotData *pd = (PlotData *)self.plotIDToPlotData[plot.identifier];
            if (pd != nil) 
                NSLog(@"CPTScatterPlotFieldY. index: %lu  returning: %f\n", (unsigned long)index, [pd yValue:index]);
                return([NSNumber numberWithDouble:[pd yValue:index]]);
            
        
        default:
            break;
    

几乎没有关于 CPTScatterPlotFieldX 枚举的文档,但我的假设是我应该根据数据点的数量获取索引参数并返回 x 轴上的实际位置。这正是我所需要的,而且似乎是一个合乎逻辑的设计。

问题是,它不起作用; #2 的绘图仍会扩展以适应整个 x 轴范围。

有人可以帮忙吗?这一定是一个常见问题,其中 2 个图表共享 x 轴但没有相同数量的数据点或仅部分覆盖定义的 x 轴范围。

【问题讨论】:

【参考方案1】:

嗯,我在 numberForPlot 上走在了正确的轨道上。我通过不为#2 调用 scaleToFitPlots 解决了这个问题。这引入了另一个问题,尽管正确设置了 y 范围,但 y 轴范围远大于应有的范围,这会将绘图压到底部。

【讨论】:

全部修复。设置 Y 范围时的愚蠢拼写错误

以上是关于2 个 y 轴不同但 x 轴相同但范围不同的核心图的主要内容,如果未能解决你的问题,请参考以下文章

可以创建双 y 轴图表,但次要 y 系列使用次要 x 轴?

报表生成器:明确的 X 轴范围定义?

我有 2 个不同的条形图,它们有一个共同的 X 轴和 2 个不同的 Y 轴。我想使用 python 将这两个使用 X 轴的图合并为一个

核心图:捏以更改 x 轴范围

具有不同 y 轴的同一可视化中的 2 个线图

R语言ggplot2包绘制双坐标轴图(双Y轴图)实战:两个Y轴分别使用不同的刻度范围