使用 jfreechart 绘制 scala 数组
Plot scala arrays with jfreechart
我有 2 个 Scala 数组,我想将它们绘制成 x,y 图。
我听说 jfreechart 是在 scala 中绘图的不错选择。
我认为绘制它们的正确命令是 XYPlot
但我该如何使用它?
val x = Array(1,2,3,4,5,6,7,8,9,10)
val y = x.map(_*2)
import org.jfree.chart.plot.XYPlot
with python matplotlib 我会用 plot(x,y)
您需要将数据放入 DataSet
,然后使用 ChartFrame
显示图表。
import org.jfree.chart._
import org.jfree.data.xy._
val x = Array[Double](1,2,3,4,5,6,7,8,9,10)
val y = x.map(_*2)
val dataset = new DefaultXYDataset
dataset.addSeries("Series 1",Array(x,y))
val frame = new ChartFrame(
"Title",
ChartFactory.createScatterPlot(
"Plot",
"X Label",
"Y Label",
dataset,
org.jfree.chart.plot.PlotOrientation.HORIZONTAL,
false,false,false
)
)
frame.pack()
frame.setVisible(true)
正如之前的评论所指出的,有 scala-chart,您可以使用它获得更多 scala 惯用用法:
import scalax.chart._
import scalax.chart.api._
val xy = for (x <- 1 to 10) yield (x,x*2)
val chart = XYLineChart(xy)
chart.show()
目前还没有像 matplotlib/Matlab/Mathematica 提供的 DSL,但我们总是欢迎贡献 ;)
然而,如果没有专注于快速绘制一些数据的 DSL,上面的语法是你能做的最好的。
注意: Array
没有自动转换,这就是为什么该示例使用 for 循环,支持所有标准 Scala 集合。
我有 2 个 Scala 数组,我想将它们绘制成 x,y 图。
我听说 jfreechart 是在 scala 中绘图的不错选择。
我认为绘制它们的正确命令是 XYPlot
但我该如何使用它?
val x = Array(1,2,3,4,5,6,7,8,9,10)
val y = x.map(_*2)
import org.jfree.chart.plot.XYPlot
with python matplotlib 我会用 plot(x,y)
您需要将数据放入 DataSet
,然后使用 ChartFrame
显示图表。
import org.jfree.chart._
import org.jfree.data.xy._
val x = Array[Double](1,2,3,4,5,6,7,8,9,10)
val y = x.map(_*2)
val dataset = new DefaultXYDataset
dataset.addSeries("Series 1",Array(x,y))
val frame = new ChartFrame(
"Title",
ChartFactory.createScatterPlot(
"Plot",
"X Label",
"Y Label",
dataset,
org.jfree.chart.plot.PlotOrientation.HORIZONTAL,
false,false,false
)
)
frame.pack()
frame.setVisible(true)
正如之前的评论所指出的,有 scala-chart,您可以使用它获得更多 scala 惯用用法:
import scalax.chart._
import scalax.chart.api._
val xy = for (x <- 1 to 10) yield (x,x*2)
val chart = XYLineChart(xy)
chart.show()
目前还没有像 matplotlib/Matlab/Mathematica 提供的 DSL,但我们总是欢迎贡献 ;)
然而,如果没有专注于快速绘制一些数据的 DSL,上面的语法是你能做的最好的。
注意: Array
没有自动转换,这就是为什么该示例使用 for 循环,支持所有标准 Scala 集合。