scala:画图

本文详细介绍使用Scala语言进行数据可视化的方法,包括如何利用breeze库绘制二维图表、直方图及图像展示。通过具体代码实例,展示了如何创建并保存不同类型的图表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

build.sbt

name := "draw"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies += "org.scalanlp" %% "breeze-viz" % "0.12"

Draw.scala

import breeze.linalg._
import breeze.plot._
object Draw {
    def main(args: Array[String]): Unit = {
        val a = new DenseVector[Int](1 to 3 toArray)
        val b = new DenseMatrix[Int](3, 3, 1 to 9 toArray)

        val f = Figure()  //在一个对话框下画一个图
        val p = f.subplot(0)
        val x = linspace(0.0, 2.0)
        
        p += plot(x, x :^ 2.0)
        p += plot(x, x :^ 3.0, '.')
        p.xlabel = "x axis"
        p.ylabel = "y axis"

        val p2 = f.subplot(2, 1, 1)   //在同一个对话框下画另一个图,参数分别表示:行、列、子图序号
        val g = breeze.stats.distributions.Gaussian(0, 1) //均值是0,标准差是1
        p2 += hist(g.sample(100000), 100)  //hist表示直方图,100000个样本点,100个条状直方
        p2.title = "A normal distribution"
        f.saveas("d:\\subplots.png")

        val f2 = Figure()
        f2.subplot(0) += image(DenseMatrix.rand(20, 20))
        f2.saveas("d:\\image.png")
    }
}

会保存并打开显示两个文件:
subplots.png
在这里插入图片描述

image.png
在这里插入图片描述

转载于:https://www.cnblogs.com/xuejianbest/p/10285078.html

scala: ## Exception when compiling 43 sources to D:\scala\scala-demo\target\classes java.lang.NullPointerException sbt.internal.inc.classpath.DualLoader.getResources(DualLoader.scala:100) java.lang.ClassLoader.getResources(ClassLoader.java:1138) java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:348) java.util.ServiceLoader$LazyIterator.access$600(ServiceLoader.java:323) java.util.ServiceLoader$LazyIterator$1.run(ServiceLoader.java:396) java.util.ServiceLoader$LazyIterator$1.run(ServiceLoader.java:395) java.security.AccessController.doPrivileged(Native Method) java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:398) java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474) scala.collection.convert.JavaCollectionWrappers$JIteratorWrapper.hasNext(JavaCollectionWrappers.scala:46) scala.collection.immutable.List.prependedAll(List.scala:152) scala.collection.IterableOnceOps.toList(IterableOnce.scala:1446) scala.collection.IterableOnceOps.toList$(IterableOnce.scala:1446) scala.collection.AbstractIterator.toList(Iterator.scala:1306) sbt.internal.inc.AnalyzingCompiler.loadService(AnalyzingCompiler.scala:316) sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:89) sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:196) scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:252) sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:186) sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:166) sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:241) sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:166) sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:214) sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:542) sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:542) sbt.internal.inc.Incremental$.$anonfun$apply$3(Incremental.scala:182) sbt.internal.inc.Incremental$.$anonfun$apply$3$adapted(Incremental.scala:180) sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:458) sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:117) sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56) sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52) sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263) sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:413) sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:500) sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:400) sbt.internal.inc.Incremental$.apply(Incremental.scala:208) sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:542) sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:496) sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332) sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:433) sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137) org.jetbrains.jps.incremental.scala.local.SbtCompiler.$anonfun$doCompile$3(SbtCompiler.scala:87) scala.util.Try$.apply(Try.scala:217) org.jetbrains.jps.incremental.scala.local.SbtCompiler.doCompile(SbtCompiler.scala:85) org.jetbrains.jps.incremental.scala.local.SbtCompiler.compile(SbtCompiler.scala:17) org.jetbrains.jps.incremental.scala.local.LocalServer.doCompile(LocalServer.scala:49) org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:28) org.jetbrains.jps.incremental.scala.remote.Main$.compileLogic(Main.scala:209) org.jetbrains.jps.incremental.scala.remote.Main$.$anonfun$handleCommand$1(Main.scala:190) org.jetbrains.jps.incremental.scala.remote.Main$.decorated$1(Main.scala:177) org.jetbrains.jps.incremental.scala.remote.Main$.handleCommand(Main.scala:187) org.jetbrains.jps.incremental.scala.remote.Main$.serverLogic(Main.scala:160) org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:100) org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) com.facebook.nailgun.NGSession.runImpl(NGSession.java:312) com.facebook.nailgun.NGSession.run(NGSession.java:198) 这是什么问题
最新发布
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值