小编Ric*_*d B的帖子

JFreeChart - Timeseries和CandleStick在同一张图表上

我正在尝试在JFreeChart中生成一个包含重叠烛台图和时间序列图的单个图表.(有点像这样)

烛台趋势叠加http://www.prices-oil.org/wp-content/uploads/2009/04/oil1stapril.jpg

我已经尝试创建烛台图表,然后添加一个额外的XY系列和它的渲染器,但这会导致运行时错误 org.jfree.data.xy.XYSeriesCollection cannot be cast to org.jfree.data.xy.OHLCDataset

我的代码片段如下

private XYPlot plot;
private XYSeriesCollection dataTrend;
private XYItemRenderer renderer;

public OhlcChart(BarCollection bars)
{

JFreeChart jfreechart = ChartFactory.createCandlestickChart("FX Trader Prototype", "Time", "Value", getDataset(bars), true);
plot = (XYPlot)jfreechart.getPlot();
plot.setDomainPannable(true);


NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
numberAxis.setAutoRangeIncludesZero(false);
    numberAxis.setAutoRangeStickyZero(false);
numberAxis.setUpperMargin(0.0D);
numberAxis.setLowerMargin(0.0D);

DateAxis dateAxis = (DateAxis) plot.getDomainAxis();
    SimpleDateFormat formatter  = new SimpleDateFormat("dd MMM HH:mm.ss");
    dateAxis.setDateFormatOverride(formatter);

    this.renderer = plot.getRenderer();
    Stroke myStroke = new BasicStroke((float) 1.0);

    this.renderer = new XYLineAndShapeRenderer();
    this.renderer.setSeriesPaint(0, Color.blue);
    this.renderer.setSeriesStroke(0, myStroke);

}

public OhlcChart update(Timeseries<Double> ts) …
Run Code Online (Sandbox Code Playgroud)

java overlay jfreechart candlestick-chart timeserieschart

6
推荐指数
1
解决办法
8393
查看次数

在 python (pytest) 测试中使用资源文件

有人能告诉我在 pytest 中处理资源文件的正确方法是什么吗?

我习惯在包(src)目录下创建一个资源目录,并在测试分支下创建另一个目录

root---package---resource_dir
     |         |-file1.py
     |         |-file2.py
     |
     |-test-- resource_dir-
            |              |-config1.csv
            |              |-config2.csv
            |-test1.py
            |-test2.py
Run Code Online (Sandbox Code Playgroud)

如果我想从测试中访问这些文件,Pythonic 的方式是什么?到目前为止,我一直在使用相对文件路径,但该解决方案并不是很好。有没有类似于Java资源解决方案的解决方案?

python pytest python-3.x

6
推荐指数
1
解决办法
5979
查看次数

JFreeChart图例显示

在我的JFreeChart时间序列图中,我发现图形线条变薄以准确地看到颜色.另一篇文章[ jfreechart - 更改图例中的颜色样本 ]建议覆盖渲染器方法,如下所示:

renderer = new XYLineAndShapeRenderer()
{
    private static final long serialVersionUID = 1L;
    public Shape lookupLegendShape(int series)
    {
        return new Rectangle(15, 15);
    }
};
Run Code Online (Sandbox Code Playgroud)

这种方法很好,直到你做我做的事情

renderer.setSeriesShapesVisible(i, false);
Run Code Online (Sandbox Code Playgroud)

一旦我这样做,传说就会恢复到一条线.这有什么办法吗?

我采用的解决方案接近于TrashGod I 建议的覆盖getLegendItem()方法,将图例形状强制转换为所需的框.

    renderer = new XYLineAndShapeRenderer()
    {
        private static final long serialVersionUID = 1L;

        public LegendItem getLegendItem(int datasetIndex, int series)
        {
            LegendItem legend = super.getLegendItem(datasetIndex, series);
            return new LegendItem(legend.getLabel(), legend.getDescription(), legend.getToolTipText(), legend.getURLText(), Plot.DEFAULT_LEGEND_ITEM_BOX, legend.getFillPaint());
        }
    };
Run Code Online (Sandbox Code Playgroud)

java legend jfreechart

5
推荐指数
1
解决办法
6559
查看次数

使用pySNMP编写SNMP代理(用于OpenNMS)

我正在尝试编写一个python SNMP代理,我可以将其嵌入到我的python应用程序中,以便OpenNMS可以远程监视应用程序.OpenNMS希望代理实现HOST-RESOURCES-MIB查询两个字段 hrSWRunNamehrSWRunStatus.

我把一个pysnmp示例作为我的代码的基础,并在我认为必要时编辑它.生成的代码如下所示:

import logging

from pysnmp import debug
from pysnmp.carrier.asyncore.dgram import udp
from pysnmp.entity import engine, config
from pysnmp.entity.rfc3413 import cmdrsp, context
from pysnmp.proto.api import v2c
from pysnmp.smi import builder, instrum, exval


# debug.setLogger(debug.Debug('all'))

formatting = '[%(asctime)s-%(levelname)s]-(%(module)s) %(message)s'
logging.basicConfig(level=logging.DEBUG, format=formatting, )

logging.info("Starting....")

# Create SNMP engine
snmpEngine = engine.SnmpEngine()

# Transport setup

# UDP over IPv4
config.addTransport(
    snmpEngine,
    udp.domainName,
    udp.UdpTransport().openServerMode(('localhost', 12345))
)

# SNMPv2c setup

# SecurityName <-> CommunityName mapping.
config.addV1System(snmpEngine, 'my-area', 'public') …
Run Code Online (Sandbox Code Playgroud)

snmp opennms mib pysnmp

5
推荐指数
1
解决办法
977
查看次数

MyPy - 处理可能的 None 返回类型

可能令我羞愧的是,我刚刚开始在我的 python 代码中包含类型检查。大多数类型检查都是直接进行的,但我对处理可以返回 None 的函数的 pythonic 方式有点迷失

例如

threads = os.cpu_count() * 1.2
Run Code Online (Sandbox Code Playgroud)

这会引发 MyPy 错误

Mypy: Unsupported operand types for * ("None" and "float")
Run Code Online (Sandbox Code Playgroud)

所以为了摆脱这个我将代码更改为

default = (os.cpu_count() if os.cpu_count() is not None else 1.0) * 1.2
Run Code Online (Sandbox Code Playgroud)

但这给出了完全相同的错误。

处理这个问题的最佳方法是什么?

python types python-3.x mypy

2
推荐指数
1
解决办法
4678
查看次数