gpt4 book ai didi

objective-c - 核心剧情: How to position the axis title for two y-axes at the same height?

转载 作者:行者123 更新时间:2023-11-28 19:16:14 34 4
gpt4 key购买 nike

我在散点图中使用了两个 y 轴(y 和 y2),我想将每个轴的标题定位在相同的高度。

请引用下面我的示例图表,其中我有两个标题(y:“USD”和 y2:“ev/ebit”)。不幸的是,我没有找到以完全相同的高度(y 值)绘制两个标题的方法。

这就是我目前计算标题的 y 位置的方式:

double yTitleLocation = plotSpace.yRange.lengthDouble + plotSpace.yRange.locationDouble;
yAxis.titleLocation = CPTDecimalFromDouble(yTitleLocation);
yAxis.title = self.issue.company.contrCurrency;
yAxis.titleRotation = 2 * M_PI;
yAxis.titleOffset = -15;

double y2TitleLocation = valuationPlotSpace.yRange.lengthDouble + valuationPlotSpace.yRange.locationDouble;
y2Axis.titleLocation = CPTDecimalFromDouble(y2TitleLocation);
y2Axis.title = self.valuation.id;
y2Axis.titleRotation = 2 * M_PI;

我需要如何更改我的代码才能在两个 y 轴的相同 y 值上绘制标题?

如果我的标题在 y 轴上左对齐,在 y2 轴上右对齐,您有什么建议?我目前在 y 轴上使用 titleOffset,但相信有更好的方法可以做到这一点。

谢谢! Axis titles

Core-Plot框架bug修复后的图表:(请引用下面的答案1)

enter image description here

编辑:这是我设置图表的方式:

我添加了这个代码片段来展示我如何设置图形和两个散点图(股票价格和估值):

graph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
self.hostView.hostedGraph = graph;
[graph applyTheme:[CPTTheme themeNamed:kCPTPlainWhiteTheme]];
graph.frame = self.view.bounds;
graph.plotAreaFrame.masksToBorder = NO;
graph.plotAreaFrame.cornerRadius = 0.0f;

CPTScatterPlot *sharePricePlot = [[CPTScatterPlot alloc] initWithFrame:graph.bounds];
sharePricePlot.identifier = @"CloseSharePricePlot";
sharePricePlot.dataLineStyle = sharePricePlotLineStyle;
sharePricePlot.dataSource = self;

CPTScatterPlot *valuationPlot = [[CPTScatterPlot alloc]initWithFrame:graph.bounds];
valuationPlot.dataSource = self;

CPTXYPlotSpace *valuationPlotSpace = [[CPTXYPlotSpace alloc] init];
valuationPlotSpace.identifier = ValuationPlotSpaceIdentifier;
[graph addPlotSpace:valuationPlotSpace];

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;

[plotSpace scaleToFitPlots:[NSArray arrayWithObject:sharePricePlot]];
[valuationPlotSpace scaleToFitPlots:[NSArray arrayWithObject:valuationPlot]];

最佳答案

那是一个 Core Plot 错误,已修复 here 。您现在可以在您的 Core Plot 副本中进行更改。每当发生这种情况时,它将成为下一个版本的一部分。我会这样写标题代码:

yAxis.titleLocation = plotSpace.yRange.maxLimit;
yAxis.title = self.issue.company.contrCurrency;
yAxis.titleRotation = 0.0;
yAxis.titleOffset = -15;

y2Axis.titleLocation = valuationPlotSpace.yRange.maxLimit;
y2Axis.title = self.valuation.id;
y2Axis.titleRotation = 0.0;
y2Axis.titleOffset = -15;

您可以使用绘图空间计算准确的标题位置。例如,要将标题放置在绘图区域上方 15 像素处,请尝试以下操作:

CGRect plotAreaBounds = graph.plotAreaFrame.plotArea.bounds;
CGPoint viewPoint = CGPointMake(CGRectMinX(plotAreaBounds),
CGRectMaxY(plotAreaBounds) + 15.0);

NSDecimal plotPoint[2];
[plotSpace plotPoint:plotPoint forPlotAreaViewPoint:viewPoint];

yAxis.titleLocation = plotPoint[CPTCoordinateY];

关于objective-c - 核心剧情: How to position the axis title for two y-axes at the same height?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11914613/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com