我使用场景构建器v2.0创建了一个fxml布局.我正在修改控制器文件中的图表,即SampleController.java文件.我能够使用.setTitle方法设置图表标题.我需要动态设置xAxis(Start,End,Ticks)和yAxis的范围.在CSS中,使用lowerBound和upperBound属性很容易设置.但这是一个永久的解决方案.请提供宝贵的建议和解决方案.
Main.java:
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.SplitPane;
import javafx.stage.Stage;
public class Main extends Application{
@Override
public void start(Stage primaryStage) {
try {
SplitPane root = (SplitPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
Scene scene = new Scene(root,800,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
Sample.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.chart.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<SplitPane dividerPositions="0.7892976588628763" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="400.0" minWidth="800.0" prefHeight="400.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SampleController"> …Run Code Online (Sandbox Code Playgroud) 我正在研究一种算法,它需要按两列分组.Pandas支持使用以下两列进行分组:
df.groupby([col1, col2])
Run Code Online (Sandbox Code Playgroud)
但结果数据帧不是必需的数据帧
工作设置:
Python: v3.5
Pandas: v0.18.1
Pandas Dataframe - 输入数据:
Type Segment
id
1 Domestic 1
2 Salary 3
3 NRI 1
4 Salary 4
5 Salary 3
6 NRI 4
7 Salary 4
8 Salary 3
9 Salary 4
10 NRI 4
Run Code Online (Sandbox Code Playgroud)
所需数据帧: 每个段中[国内,薪水,NRI]的计数
Domestic Salary NRI
Segment
1 1 3 1
3 0 0 0
4 0 3 2
Run Code Online (Sandbox Code Playgroud)
实验:
group = df.groupby(['Segment', 'Type'])
group.size()
Segment Type Count
1 Domestic 1
NRI 1
3 Salary …Run Code Online (Sandbox Code Playgroud) 我有以下功能来保存 LineChart 图像:
@FXML
public void saveAsPng() {
String timeStamp = new SimpleDateFormat("HHmmss_yyyyMMdd").format(Calendar.getInstance().getTime());
chart.setAnimated(false);
System.out.println("Saving . . .");
WritableImage image = chart.snapshot(new SnapshotParameters(), null);
File file = new File("chart"+timeStamp+".png");
try {
ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file);
} catch (IOException e) {
Logger.getLogger(SampleController.class.getName()).log(Level.SEVERE, null, e);
System.out.println("Error");
}
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,用于 ARM 的 JDK 不支持Swing API。使用时出现错误:
ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file);
Run Code Online (Sandbox Code Playgroud)
我在WritableImage 图像变量中有渲染图像。还有其他方法可以保存图表吗?