gpt4 book ai didi

java - GWT Google Visualization - 随后的重绘会改变 Y 轴步数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 15:06:13 27 4
gpt4 key购买 nike

我在使用 GWT google 可视化库包装器时遇到了一个奇怪的错误,特别是 AnnotatedTimeLine。

也就是说,我在对 google 可视化工具的初始 ajax 调用上绘制图表,然后使用计时器每 5 秒重新绘制一次。每次重绘时,Y 轴上的“步长”都会更改其值和频率(有时您会以更频繁的间隔使用它们)。注意图表的值保持完全相同。我提供了两张屏幕截图来向您展示它的两种立场。在随后的每次重画中,它都会从一种立场变为另一种立场。请注意右侧 892 和 900 上不同的情绪值,尽管图表上的值在这两种情况下均为 903。

Stance 1

Stance 2

我相信这可能是因为双 Y 轴。每次重绘时,焦点都会随着“主”Y 轴从一个轴更改为另一个轴而变化。我认为这可能得到以下事实的支持:在第一个价格中显示为第一个参数,而在第二个价格中则相反。有什么想法吗?

这是我的客户端代码:

public class GUI implements EntryPoint {

// create a remote service proxy to talk to server side-side data service
private final ChartDataServiceAsync chartDataSvc = GWT.create(ChartDataService.class);
private AnnotatedTimeLine graph;

public void onModuleLoad() {
// Create a callback to be called when the visualization API
// has been loaded.
Runnable onLoadCallback = new Runnable() {
public void run() {
Panel panel = RootPanel.get();
graph = new AnnotatedTimeLine("1000px", "500px");
// used in css file
graph.addStyleName("timeLine");
panel.add(graph);
createTable();
}
};

// Load the visualization api, passing the onLoadCallback to be called
// when loading is done.
VisualizationUtils.loadVisualizationApi(onLoadCallback, AnnotatedTimeLine.PACKAGE);

Timer timeoutTimer = new Timer() {
public void run() {
createTable();
// Window.alert("Reloaded chart.");
}
};
timeoutTimer.scheduleRepeating(1000*5);

}

private Options createOptions() {
Options options = Options.create();
options.setDisplayZoomButtons(true);
options.setDisplayAnnotations(false);
options.setAllowRedraw(true);
options.setDateFormat("MMMM dd, yyyy");
options.setDisplayDateBarSeparator(true);
options.setDisplayExactValues(true);
options.setDisplayRangeSelector(false);
options.setThickness(2);
options.setScaleColumns(0,1);
options.setScaleType(ScaleType.ALLMAXIMIZE);
Map<Integer,String> m1 = new LinkedHashMap<Integer,String>();
m1.put(0,".0000");
m1.put(1, "######");
options.setNumberFormats(m1);
return options;
} // end createOptions()

private void createTable() {

final DataTable data = DataTable.create();
data.addColumn(ColumnType.DATE, "Date");
data.addColumn(ColumnType.NUMBER, "Price");
data.addColumn(ColumnType.NUMBER, "Sentiment");

// Set up the callback object.
AsyncCallback<List<PriceData>> callback = new AsyncCallback<List<PriceData>>() {
public void onFailure(Throwable caught) {
// TODO: Do something with errors.
System.out.println("RPC call failed!");
}

public void onSuccess(List<PriceData> result) {
System.out.println("success!");
data.addRows(result.size());
for (int i = 0; i < result.size(); i++) {
String dateString = result.get(i).getDate();
DateTimeFormat form1 = DateTimeFormat.getFormat("dd/MM/yyyy HH:mm:ss");
Date d = form1.parse(dateString);
data.setValue(i, 0, d);
data.setValue(i, 1, result.get(i).getPrice());
data.setValue(i, 2, i);
}
// Create a chart visualization.
graph.draw(data, createOptions());

}
};
// Make the call to the stock price service.
chartDataSvc.getChartData("Prices.csv", callback);
} // end createTable()

RPC 调用只是从服务器上的文件中获取数据。

编辑:我注意到,如果我设置选项allowRedraw(false),所有这些问题都将得到解决。还有一个问题是后续重绘没有注意到数据文件中的更改,这也解决了。所以allowRedraw函数的方式一定代表了问题。但我确实需要允许重绘,因为现在每次后续重绘都非常慢,并且屏幕上有明显的闪烁。

最佳答案

我认为这可能是由于注释时间线图表中的错误造成的:

请参阅此处的 thread

Issue 766Issue 107

关于java - GWT Google Visualization - 随后的重绘会改变 Y 轴步数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21964147/

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