How to use OxyPlot in Unity

Yes, you can use OxyPlot in Unity a great library for creating Graphs and Charts.

1.     In Visual Studio, create a dummy solution for a Class Library .net standard 2.0 and get the OxyPlot and OxyPlot.SkiaSharp NuGet packages:

2.       Right click on the project and select Open in Terminal.

3.       Build using command> dotnet publish -c Release -f netstandard2.0

4.       Copy all the dlls to Unity \Assets\Plugins\OxyPlot

 

Download the NuGet packages and extract the runtime from:

  1.  skiasharp.nativeassets.android
  2.  skiasharp.nativeassets.win32
  3.  harfbuzzsharp.nativeassets.android
  4.  harfbuzzsharp.nativeassets.win32

 See Appendix for full list of files.

Test Code

    [SerializeField] RawImage _rawImage;

   // Start is called before the first frame update
      void Start()
      {

          var plotModel = new PlotModel { Title = "OxyPlot Demo" };
          plotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom });
         plotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Maximum = 10, Minimum = 0 }); 

        var series1 = new LineSeries
          {
            MarkerType = MarkerType.Circle,
            MarkerSize = 4,
            MarkerStroke = OxyColors.White
          };

          series1.Points.Add(new DataPoint(0.0, 6.0));
          series1.Points.Add(new DataPoint(1.4, 2.1));
          series1.Points.Add(new DataPoint(2.0, 4.2));
          series1.Points.Add(new DataPoint(3.3, 2.3));
          series1.Points.Add(new DataPoint(4.7, 7.4));
          series1.Points.Add(new DataPoint(6.0, 6.2));
          series1.Points.Add(new DataPoint(8.9, 8.9));

          plotModel.Series.Add(series1);

          MemoryStream ms = new MemoryStream();
          PngExporter.Export(plotModel, ms, 500, 300);
          _rawImage.texture = GeneralUtils.ByteArrayToTexture(ms.ToArray());

    }

 

Appendix

List of All OxyPlot and Related Files

Directory of C:\<path>Unity\Assets\Plugins\OxyPlot

 HarfBuzzSharp.dll

 HarfBuzzSharp.dll.meta

 lib

 lib.meta

 OxyPlot.dll

 OxyPlot.dll.meta

 OxyPlot.SkiaSharp.dll

 OxyPlot.SkiaSharp.dll.meta

 runtimes

 runtimes.meta

 SkiaSharp.dll

 SkiaSharp.dll.meta

 SkiaSharp.HarfBuzz.dll

 SkiaSharp.HarfBuzz.dll.meta

 System.Buffers.dll

 System.Buffers.dll.meta

 System.Memory.dll

 System.Memory.dll.meta

 System.Numerics.Vectors.dll

 System.Numerics.Vectors.dll.meta

 

 Directory of C:\<path>Unity\Assets\Plugins\OxyPlot\runtimes

 android-arm

 android-arm.meta

 android-arm64

 android-arm64.meta

 android-x64

 android-x64.meta

 android-x86

 android-x86.meta

 win-x64

 win-x64.meta

 

 Directory of C:\<path>Unity\Assets\Plugins\OxyPlot\runtimes\android-arm\native

 libHarfBuzzSharp.so

 libHarfBuzzSharp.so.meta

 libSkiaSharp.so

 libSkiaSharp.so.meta

 

 Directory of C:\<path>Unity\Assets\Plugins\OxyPlot\runtimes\android-arm64\native

 libHarfBuzzSharp.so

 libHarfBuzzSharp.so.meta

 libSkiaSharp.so

 libSkiaSharp.so.meta

 

 Directory of C:\<path>Unity\Assets\Plugins\OxyPlot\runtimes\android-x64\native

 libHarfBuzzSharp.so

 libHarfBuzzSharp.so.meta

 libSkiaSharp.so

 libSkiaSharp.so.meta

 

 Directory of C:\<path>Unity\Assets\Plugins\OxyPlot\runtimes\android-x86\native

 libHarfBuzzSharp.so

 libHarfBuzzSharp.so.meta

 libSkiaSharp.so

 libSkiaSharp.so.meta

 

 Directory of C:\<path>Unity\Assets\Plugins\OxyPlot\runtimes\win-x64\native

 libHarfBuzzSharp.dll

 libHarfBuzzSharp.dll.meta

 libSkiaSharp.dll

 libSkiaSharp.dll.meta

Comments