- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 JFreeChart 与 Java 结合使用,以使用箱线图评估实验结果。我想更改异常值和 farout 条目的颜色和形状。
这就是当我使用普通的 BoxAndWhiskerRenderer 时我的绘图目前的样子:我这样设置渲染器:
BoxAndWhiskerRenderer renderer = new BoxAndWhiskerRenderer();
renderer.setFillBox(true);
renderer.setSeriesPaint(0, Color.DARK_GRAY);
renderer.setSeriesPaint(1, Color.LIGHT_GRAY);
renderer.setSeriesOutlinePaint(0, Color.BLACK);
renderer.setSeriesOutlinePaint(1, Color.BLACK);
renderer.setUseOutlinePaintForWhiskers(true);
Font legendFont = new Font("SansSerif", Font.PLAIN, 15);
renderer.setLegendTextFont(0, legendFont);
renderer.setLegendTextFont(1, legendFont);
renderer.setMeanVisible(false);
在这里,我无法更改异常值的颜色和形状。我希望它们是黑色的,而不是它们系列的颜色。我希望它们看起来像小十字,而不是这些大的空心圆圈。也根本没有显示 farout 值,似乎其中一个异常值被切断了。
然后我找到了 ExtendedBoxAndWhiskerRenderer
它允许编辑离群值和远值的颜色和形状。这就是它的样子: 我像以前一样设置渲染器,但我添加了两行来设置异常值和 farout 条目的颜色:
renderer.setOutlierPaint(Color.BLACK); renderer.setFaroutPaint(Color.LIGHT_GRAY);
我还通过将扩展渲染器实现中的圆半径减少到 1.0 而不是 2.0 来试验异常值的形状:
private Shape createEllipse(Point2D point, double oRadius) {
Ellipse2D dot = new Ellipse2D.Double(point.getX(), point.getY(), oRadius*1.0, oRadius*1.0);
return dot;
}
不过,我也不太喜欢这些情节。即使我将它们设置为黑色,我情节的晶须/轮廓也不再是黑色。即使我将其设置为不可见,均值再次可见。大量的异常值看起来有点荒谬,让我想知道为什么在使用普通渲染器的绘图中根本没有 farouts。
如果有人能帮我解决这些较小的外观问题,那就太好了。否则,我将只采用当前的图,其中包含看起来很奇怪的异常值和缺失的 farouts...
最佳答案
同时 ExtendedBoxAndWhiskerRenderer
是典范,它有些过时,并且它的大部分功能已合并到主线版本中。您的实验表明旧渲染器和新数据集不兼容。
因为异常值渲染方法是私有(private)的,另一种方法是覆盖相关的 draw*Item()
方法并让它调用您自己的变体。您需要根据需要使用公共(public)访问器来概括现有代码。大体上,以下变体演示了如何使用 Color.black
,如下图所示。
plot.setRenderer(new BoxAndWhiskerRenderer() {
@Override
public void drawVerticalItem(Graphics2D g2, …) {
// existing code that calls the methods below
}
private void drawEllipse(Point2D point, double oRadius, Graphics2D g2) {
Paint temp = g2.getPaint();
g2.setColor(Color.black);
Ellipse2D dot = new Ellipse2D.Double(point.getX() + oRadius / 2,
point.getY(), oRadius, oRadius);
g2.draw(dot);
g2.setPaint(temp);
}
private void drawHighFarOut(double aRadius, Graphics2D g2, double xx,
double m) {
Paint temp = g2.getPaint();
g2.setColor(Color.black);
double side = aRadius * 2;
g2.draw(new Line2D.Double(xx - side, m + side, xx + side, m + side));
g2.draw(new Line2D.Double(xx - side, m + side, xx, m));
g2.draw(new Line2D.Double(xx + side, m + side, xx, m));
g2.setPaint(temp);
}
}
关于java - JFreeChart Boxplot Outlier 和 Farout 外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28365288/
我想通过 Seaborn 中生成的箱线图获取特定值 (即,媒体,四分位数)。例如,在下面的箱线图中(来源:link) 有没有办法获得媒体和四分位数而不是手动估计? import numpy as np
我正在尝试创建箱线图,但遇到了这个错误 - “系列”对象没有属性“箱线图” 这是我当前的代码: fig = plt.figure(figsize=(8,6)) ax = fig.gca() frame
我无法在箱形图中使用名称。它不起作用是因为我只有一个向量吗?这是我尝试过的。 tmp = c(1,1,1,1,2,2,2,2,5,5,5,5,5,6,5,4,7) boxplot(tmp) boxpl
我正在使用 seaborn 创建箱线图。当我指定一列对框进行分组/着色时,框的宽度变得非常窄,以至于很难看到。我所做的唯一更改是为hue 指定一个参数,它指向传递的数据帧中的一列。我曾尝试使用 'wi
delme <- exp(rnorm(1000,1.5,0.3)) boxplot(delme,log="y") boxplot(log10(delme)) 为什么这两幅图中的 mustache 不同
我使用以下代码对以第 5 个和第 95 个百分位数作为上限和下限的值进行箱线图。令人惊讶的是,我通过在 python 2.7.3 中使用 matplotlib 1.4.0 和在 python 3.6.
我正在尝试将箱线图的异常值颜色与美学(scale_colour_discrete)设置的填充颜色相匹配。 这是一个例子。 m <- ggplot(movies, aes(y = votes, x =
我对 R 和 ggplot 还很陌生。 我正在尝试生成一个按两个变量排序的箱线图。就我而言,物种和实验。 到目前为止我得到了什么 ggplot(DF, aes(Species, Protein, fi
我有一个数据框,其中包含“季度”和“转售价格”列。我使用数据框使用seaborn绘制了箱线图。箱线图显示季度值,例如 (2007-Q2、2007-Q3、2007-Q4、2008-Q2)。但是,我希望它
我正在根据大数据(2150000 个案例)按年份绘制两组体重的简单箱线图。除去年的最后一组外,所有组的中位数都相同,但在箱线图上,它绘制得好像与其他组一样。 #boxplot ggplot(data
我正在将 datafame 的一些列绘制成箱线图。到目前为止,没问题。如下所示,我写了一些东西并且它有效。但是:第二个图也包含第一个图的图。正如你所看到的,我用“= None”或“del value”
下面的代码有助于获得具有独特颜色框的子图。但是所有子图共享一组通用的 x 和 y 轴。我期待每个子图都有独立的轴: import pandas as pd import numpy as np imp
在关于如何制作具有方面和显着性水平的箱线图的许多问题之后,特别是 this和 this ,我还有一个小问题。 我设法生成了如下所示的图,这正是我想要的。 我现在面临的问题是当我很少或没有显着的比较时;
预先感谢您的帮助! 我正在尝试在 matplotlib 中创建箱线图,但在尝试添加标签时出现错误。这是引发错误的代码: df_selected_station_D.boxplot(column='20
我正在使用 Wisconsin dataset 。要显示 Y 轴是数据帧变量(例如:radius_mean)且 X 轴是诊断的箱线图,我执行以下操作: sns.boxplot(x='label', y
我已经为此工作了几个小时,似乎无法做到这一点。箱线图只给我平坦的垂直线,它让我发疯。无论有没有因子函数,我都得到相同的输入 ggplot(df2,aes(x = factor(Location),y=
预先感谢您的帮助! 我正在尝试在 matplotlib 中创建箱线图,但在尝试添加标签时出现错误。这是引发错误的代码: df_selected_station_D.boxplot(column='20
我正在使用 Wisconsin dataset 。要显示 Y 轴是数据帧变量(例如:radius_mean)且 X 轴是诊断的箱线图,我执行以下操作: sns.boxplot(x='label', y
我正在尝试将箱线图中的异常值涂成黑色。我设法将盒子着色为灰色,但我不知道如何为异常值着色。 (图表上的白点) boxplot(y1$Frequency..times., col="grey") 预先感
在 R 中,我试图在 ggplot 中制作一个箱线图,其中翻转坐标(水平框)使用 facets 分组。当我在不翻转坐标的情况下构建它时,ggplot 将在 scales="free"的方面内删除未使用
我是一名优秀的程序员,十分优秀!