none
グラフ表示 RRS feed

  • 質問

  • 以下、いずれも調査中ですが、書き込みします。

    (やりたいこと)

    Azure(Web)アプリにて

    ①あんどん的な表示するAPIは何か?

    ②折れ線グラフなどを表示するAPIは何か?

    参考URLなどあれば、紹介お願いします。

    Chartを利用かな・・・。

    WindowsアプリでいうTableLayoutPanelみたいなものを利用したい。

    • 編集済み ringo07 2018年5月15日 13:37
    2018年5月15日 13:25

すべての返信

  • > Chartを利用かな・・・。

    Chart を知っているなら自分で試して、自分で Chart が目的に合うか確認してはいかがですか?

    質問者さんの目的に合えばここで聞く必要はないし、合わなければこれこれこういうところが目的に合わない等々書いてもらえると、もっと具体的に役に立ちそうな情報が集まり易いと思われます。

    Sample がありますので使えそうなものを探してみては? サンプルの入手方法・設定方法は以下の記事を見てください。

    Chart Samples
    http://surferonwww.info/BlogEngine/post/2016/02/14/chart-samples.aspx

    Azure Web App には制約があるそうですが(GDI が使えないなど・・・詳しくは以下の記事参照)、それも実際に試せばわかるはず。

    Azure Web App sandbox
    https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox

    2018年5月16日 0:32
  • 大雑把の内容でした。

    ご返信、ありがとうございます。

    Azureでは、Chartコントロールは使用できないですね。

    名前が似ていますが、Chart.jsを利用すれば実現できると考えています。

    Chart.js以外にもjavascriptを駆使して実現かな。

    ※大雑把な内容ですが、注意事項、アドバイスなどいただければ幸いです。

    以上

    2018年5月16日 5:16
  • > Azureでは、Chartコントロールは使用できないですね。

    そういう話は少なくとも自分は聞いたことがないです。(デフォルトの temporary フォルダのアクセス権の問題というのは聞いたことがありますが、それは Azure で Chart は使えないということではないです。もっとも、自分は Azure Web App は使ったことがないので、自分が知らないだけという可能性は否定できませんが)

    Microsoft の公式文書もしくはそれに類する信頼できそうな文書に「使えない」という記述があるなど、情報をお持ちでしたら紹介していただけると幸いです。

    2018年5月16日 5:47
  • C# MVCでSystem.Web.DataVisualizationを利用して実現できることを

    トライアル環境で確認できました。

    (補足)

    公式文書は見つかっていません。

    他所の掲示板で、Chartコントロールだと開発できるけど、デプロイされたモジュール実行できないとの書き込みあり。

    結論でも、出来なかったで終わっていた。

    事実、わたしもWebFormだと実行エラーになりました。(RuntimeError)

    取急ぎ、以上です。

    2018年5月21日 1:09
  • 返答をありがとうございます。

    Azure Web App を使ったことがなくて、実際にできるという確証を示せない自分が言っても説得力はないですけど、興味があれば以下を読んでいただけると幸いです。

    > C# MVCでSystem.Web.DataVisualizationを利用して実現できることをトライアル環境で確認できました。

    ご存知かもしれませんが、Chart コントロールは Web サーバー側で画像(デフォルトで .png 形式)を生成して、Web サーバーのどこか(デフォルトで c:\TempImageFiles\ フォルダ。メモリ、Session も可)に一時的に保存し、img 要素の src 属性に取得先を指定してブラウザに送信するという仕組みになっています。詳しくは以下の記事を見てください。

    Chart
    http://surferonwww.info/BlogEngine/post/2010/11/27/Chart.aspx

    なので、上記の質問者さんのレスの「System.Web.DataVisualizationを利用して」というのが Web Forms アプリ用の Chart コントロールのことであれば、Web サーバーで Chart コントロールが画像を生成できたということは間違いないはずです。

    そして、「トライアル環境」というのは Azure Web App 環境ということであれば、少なくとも Chart コントロールによる画像の生成は、上の私のレスで紹介した記事の Azure Web App 環境の制約(GDI が使えないなど)には引っかかってないということになるはずです。

    上記の想像が間違っていなければ、Web Forms でうまくいかなかったというのは、Azure Web App の制約ではなくて、何か別の理由があったのではないかと思われます。

    2018年5月21日 2:28
  • 【追伸】

    一つ気が付いたことがあるので以下に書いておきます。

    > C# MVCでSystem.Web.DataVisualizationを利用して実現

    上記のところは具体的にどのようなコードを書いたのですか?

    もし、以下の記事のチェックマークがついている回答「Generating the Image from a Controller」のようにしたとすると、IIS のワーカープロセスのアクセス権の問題が避けられるので、MVC ではうまくいったという話ではないかと思います。

    New asp.net charting controls - will they work with MVC (eventually)?
    https://stackoverflow.com/questions/319835/new-asp-net-charting-controls-will-they-work-with-mvc-eventually#320891

    Web Forms アプリで Chart を使用する場合、デフォルトの設定では c:\TempImageFiles フォルダを Chart が生成した画像ファイルの一時保存場所に使います。なので、IIS のワーカープロセスが c:\TempImageFiles フォルダに対する書き込み・読み出し権限を持っていなければなりません。

    一方、上の stackoverflow の記事のコードのように、MemoryStream に画像データを保存してそれから直接ブラウザにダウンロードさせるという形になっていると、ワーカープロセスのアクセス権の問題は発生しません。

    Web Forms アプリでも、開発環境でならうまくいくが Azure Web App ではダメということですと、ワーカープロセスのアクセス権が違うからでしょう。

    開発環境では IIS Express 上で Web アプリを動かしていると思いますが、その場合ワーカープロセスは質問者さんが Visual Studio を動かしているアカウントになっています。多分、そのアカウントは管理者権限を持っているので c:\TempImageFiles フォルダに対する権限を持っていると思います。

    しかし、Azure Web App のワーカープロセスは c:\TempImageFiles フォルダに対するアクセス権は持っていないでしょうし、与えるのも無理でしょうから、web.config の設定でファイルの一時保存場所を変更して対応することになります。

    上で紹介した記事にも書きましたが、Web Froms アプリでは web.config の設定はデフォルトでは以下のようになっているはずです。

    <appSettings>
      <add key="ChartImageHandler" 
        value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
    </appSettings>

    この value の設定を、ワーカープロセスのアクセス権の問題を解決できるように変えることで対処できると思います。value の設定について、詳しくは以下の記事を見てください。

    イメージ ファイルの管理
    https://msdn.microsoft.com/ja-jp/library/dd456629(v=vs.120).aspx

    2018年5月21日 6:19