旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【WPF】 OxyPlotでグラフを描画する簡単な例

WPFでグラフを描きたい時はOxyPlotを利用しているのですが、頻繁に使うわけでもないため、使う度に同じことを調べる事態になってしまっています。そのため、OxyPlotの使い方に関する単純な例をメモしておきます。

1. NuGetからOxyPlot.Wpfをインストールする

2. (XAML)Windowにoxyを追加する & GridにPlotを追加する

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Test"
        mc:Ignorable="d"
        xmlns:oxy="http://oxyplot.org/wpf"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <oxy:Plot Name="PlotExample" Title="Example">
            <oxy:Plot.Series>
                <oxy:LineSeries/>
            </oxy:Plot.Series>
        </oxy:Plot>        
    </Grid>
</Window>

3. Axisを定義し、データをセットする

// これらのusingが必要
using OxyPlot;
using OxyPlot.Wpf;


// X軸の定義
LinearAxis xAxis = new LinearAxis
{
    Position = OxyPlot.Axes.AxisPosition.Bottom,
    Title = "x",
    Unit = "x unit"
};
PlotExample.Axes.Add(xAxis);

// Y軸の定義
LinearAxis yAxis = new LinearAxis
{
    Position = OxyPlot.Axes.AxisPosition.Left,
    Title = "y",
    Unit = "y unit"
};
PlotExample.Axes.Add(yAxis);

// ItemsSourceにデータをセットする
var points = new List<DataPoint>() { new DataPoint(0.0, 1.0), new DataPoint(1.0, 2.0), new DataPoint(2.0, 3.0) };
PlotExample.Series[0].ItemsSource = points;
// Plotを更新する
PlotExample.InvalidatePlot();


f:id:ni4muraano:20170715160706p:plain

【C#】 C#からDOSコマンドでPythonスクリプトを呼び出す

C#からPythonを呼び出す方法はいくつかあるようで、IronPythonを利用する方法がまずヒットしたのですが、IronPythonではサポートされていないライブラリを利用したスクリプトを呼び出したいと考えています。そのため、こちら(DOSコマンドを実行し出力データを取得する: .NET Tips: C#, VB.NET)の方法を利用してみることにしました。

// プロセスクラスのインスタンス化
var p = new Process();

// cmd.exeのパスを取得
p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
// 出力を読み取れるようにする
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = false;
// ウインドウを表示しないようにする
p.StartInfo.CreateNoWindow = true;
// hello.pyを実行する(ファイルにはprint('Hello')と書かれている)
p.StartInfo.Arguments = @"/c python hello.py";

// 起動
p.Start();

// 出力を読み取る
string result = p.StandardOutput.ReadToEnd();

// プロセス終了まで待機する
p.WaitForExit();
p.Close();

// コンソールにHelloと表示される
Console.WriteLine(result);

【OpenOffice】 作成したグラフを削除する

Excelが入っていないPCがあって、そこでOpenOffice Calcを使っているのですが、Excelとは勝手が違って面倒です。今日は作成したグラフを削除できず調べてみると解決策が書かれていました。

blog-orion110.at.webry.info

一旦グラフと異なる場所をクリックしてグラフを抜け出し、その後グラフをクリックしてDelキーで削除できました。

【料理】 ゴーヤチャンプルー

ここを元に作成。 www.sirogohan.com

材料(二人分)

  • ゴーヤ   1/2本

  • 木綿豆腐  300g

  • バラ肉  100g

  • 卵     1個

  • 塩コショウ 適量

  • サラダ油/ごま油

  • 醤油

作り方

1. 木綿豆腐をキッチンペーパーでくるんで水切りする
2. 卵1個をといておく
3. ゴーヤを縦半分に切る
4. スプーンを使って種を取り除く
5. 4~5mm幅に切る
6. 塩小さじ1/4をまぶし、軽く混ぜ合わせる
7. 豚バラ肉を3~4cm幅に切り、塩をうっすら、粗挽き胡椒を多めにふる
8. フライパンにサラダ油をひき、温まったら豆腐を入れる
9. 豆腐を取り出し、ごま油小さじ1を追加し、ゴーヤを炒める
10. 豚バラ肉を入れて炒める
11. 塩ひとつまみ強、胡椒少々で味付けし、溶き卵を流し入れる
12. 10秒待ってフライパンを振る。最後に醤油を小さじ2回しかける

【数学】 フィッシャーの線形判別を理解するのに有効なサイトのメモ

フィッシャーの線形判別について調べていたのですが、分かりやすく書いてくれているサイトを見つけたのでメモします。

理論についてはこちらが分かりやすいです。

s0sem0y.hatenablog.com

コードが必要であればこちらにコード付きで記事を書かれています。

aidiary.hatenablog.com