首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prefuse轴标题

prefuse轴标题
EN

Stack Overflow用户
提问于 2012-08-25 08:31:05
回答 1查看 109关注 0票数 0

如何为prefuse散点图中的轴指定标题?

此时,我的代码从文件中读取数据,并且x和y轴的范围都在代码中工作。现在我需要做的就是为轴添加标题/名称。我目前拥有的代码显示:

代码语言:javascript
复制
//set up the actions
AxisLayout xaxis = new AxisLayout(group, "GD",
Constants.X_AXIS, VisiblePredicate.TRUE); 

AxisLayout yaxis = new AxisLayout(group, POINTS,
Constants.Y_AXIS, VisiblePredicate.TRUE);

//yaxis.setScale(Constants.LOG_SCALE);
yaxis.setRangeModel(receiptsQ.getModel());
receiptsQ.getNumberModel().setValueRange(0,120,0,120);

xaxis.setLayoutBounds(m_dataB);
yaxis.setLayoutBounds(m_dataB);

// sets group,axis,values,bounds 
AxisLabelLayout ylabels = new AxisLabelLayout("ylab", yaxis, m_ylabB);
NumberFormat nf= NumberFormat.getInstance();
nf.setMaximumFractionDigits(0);
ylabels.setNumberFormat(nf);

// AxisLabelLayout xlabels = new AxisLabelLayout("goal diff", xaxis, m_xlabB, 15);
AxisLabelLayout xlabels = new AxisLabelLayout("xlab",xaxis,m_xlabB,5);

// vis.putAction("xlabels", xlabels);
vis.putAction("xlabels", xlabels);
EN

回答 1

Stack Overflow用户

发布于 2012-08-28 13:38:39

你必须手工做这件事。我已经做到了这一点,并且我的代码是开源的,所以欢迎你来看看它:

https://github.com/brycecr/msmexplorer/blob/acacia/MSMExplorer/src/edu/stanford/folding/msmexplorer/util/axis/AxisRotateRenderer.java

https://github.com/brycecr/msmexplorer/blob/acacia/MSMExplorer/src/edu/stanford/folding/msmexplorer/util/axis/AxisLabelLabelLayout.java

在标签渲染器中,所有标签都绘制为一条线和一个标签的组合。在这个类中,我们只需要用我们的图形在布局中添加一个额外的项目。

这在all...in上并不是特别干净,仍然会为标签渲染一条线(实际上是一个像素),但我很懒,这符合我的需要……我认为如果需要的话,你可以改进这一点,但你可能需要进入轴渲染器,让它不为你的标签项绘制线。

如果您对此操作有任何问题,请与我联系。

代码语言:javascript
复制
    @Override
    public void run(double frac) {
        super.run(frac);

        setLabPos(item, length/2.0d + width, bounds);
    }

    /**
     * Set the layout values for an axis label item.
     */
    protected void setLabPos(VisualItem item, double xOrY, Rectangle2D b) {
        switch (getAxis()) {
            case Constants.X_AXIS:
                xOrY = super.isAscending() ? xOrY + b.getMinX() : b.getMaxX() - xOrY;
                PrefuseLib.updateDouble(item, VisualItem.X,  xOrY);
                PrefuseLib.updateDouble(item, VisualItem.Y,  b.getMaxY() + label.getFont().getSize()/3.0d + gridLab.getFont().getSize());
                PrefuseLib.updateDouble(item, VisualItem.X2, xOrY);
                PrefuseLib.updateDouble(item, VisualItem.Y2, b.getMaxY() + label.getFont().getSize()/3.0d + gridLab.getFont().getSize());
                break;
            case Constants.Y_AXIS:
                xOrY = super.isAscending() ? b.getMaxY() - xOrY - 1 : xOrY + b.getMinY();
                PrefuseLib.updateDouble(item, VisualItem.X,  b.getMinX());
                PrefuseLib.updateDouble(item, VisualItem.Y,  xOrY);
                PrefuseLib.updateDouble(item, VisualItem.X2, b.getMinX());
                PrefuseLib.updateDouble(item, VisualItem.Y2, xOrY);
        }
    }
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12118224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档