OWCによるグラフ描写について

このQ&Aのポイント
  • Web上で折れ線グラフを表示するプログラムを作成中の際、特定の部分を非表示にする方法がわからないです。
  • X軸の1から10までに対して、Y軸の10から50まで表示して、残りの部分を非表示にしたいです。
  • Excelではデータ部分を空白にすれば非表示になりますが、OWCでは''や'NULL'で指定しても「0」として扱われてしまいます。指定方法を教えていただける方がいらっしゃいましたら、ご教授ください。
回答を見る
  • ベストアンサー

OWCによるグラフ描写について

いつもお世話になっています。お知恵を拝借したく質問いたします。 .NET環境でOffice Web Components(OWC)11を使って Web上で折れ線グラフを表示するプログラムを作成していますが、グラフの中で指定部分を表示しないようにしたいのですが方法が解りません。 具体的にはX軸の「1,2,3,4,5,6,7,8,9,10」に対して Y軸の「10,20,30,40,50」まで表示して残りを非表示にしたいのです。Excelではデータ部分を空白にすれば非表示になりますが、''で指定しても'NULL'で指定しても「0」扱いになってしまいます。 指定方法をご存知の方がいらっしゃいましたら、どうかご教授ください。 よろしくお願いいたします 開発環境 WindowsServer2003R2 .NetFrameWork2.0 VisualStudio2005 Office Web Components(OWC)11 -------------------------以下ソース------------------------- Dim chartSpace As ChartSpace = New ChartSpaceClass() Dim chChart As ChChart = chartSpace.Charts.Add(0) '折れ線グラフ chChart.Type = ChartChartTypeEnum.chChartTypeLine 'Y軸 Dim YAxis As ChScaling YAxis = chChart.Axes(ChartAxisPositionEnum.chAxisPositionLeft).Scaling YAxis.Type = ChartScaleTypeEnum.chScaleTypeLinear YAxis.Maximum = 100 YAxis.Minimum = -100 'X軸 Dim XAxis As ChScaling XAxis = chChart.Axes(ChartAxisPositionEnum.chAxisPositionBottom).Scaling XAxis.Type = ChartScaleTypeEnum.chScaleTypeLinear XAxis.Maximum = 14 '値をプロット Dim series As ChSeries = chChart.SeriesCollection.Add(0) series.Type = chartSpace.Constants.chChartTypeScatterLine series.SetData(ChartDimensionsEnum.chDimYValues, CInt(ChartSpecialDataSourcesEnum.chDataLiteral), "10,20,30,40,50,'','','','','',''") series.SetData(ChartDimensionsEnum.chDimXValues, CInt(ChartSpecialDataSourcesEnum.chDataLiteral), "1,2,3,4,5,6,7,8,9,10") With chartSpace .Border.Color = chartSpace.Constants.chColorNone End With Response.BinaryWrite(chartSpace.GetPicture("gif", 500, 400)) Response.End() -------------------------END-------------------------

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Y軸のデータの設定を以下のようにすればご希望のグラフになりそうです series.SetData(ChartDimensionsEnum.chDimYValues, CInt(ChartSpecialDataSourcesEnum.chDataLiteral), "10,20,30,40,50,,,,,,") series.SetData(ChartDimensionsEnum.chDimXValues, CInt(ChartSpecialDataSourcesEnum.chDataLiteral), "1,2,3,4,5,6,7,8,9,10") といった具合に 数値の無い部分を ,,といった具合に ''も挿入しないといった具合です

badmiya
質問者

お礼

ご指導ありがとうございました わからなかった点は再度調べてみようと思います 一度質問を締め切って仕切りなおしいたします ありがとうございました

badmiya
質問者

補足

>redfox63さん 早速の回答ありがとうございます! 「''か'NULL'を入れなければいけない」と思い込んでいました。ありがとうございます。 教えていただいた方法で表示を試してみたところ、X軸の「7」以降の表示自体が省略されていました。 質問の仕方が悪かったのですが、今回の目的は「グラフの折れ線を途中で止める」ことで、 その指定は[XAxis.Maximum = 14]の部分だと思っていたのですが、別の部分になるのでしょうか? 回答頂いた上で失礼ですが、ご教授いただけないでしょうか

関連するQ&A

  • ASP OWCでのグラフ作成について

    ASP OWCでグラフの作成をしています 下記コードにて実行すると、「オブジェクトでサポートされていないプロパティまたはメソッドです。: 'Minimum'」のエラーとなります 解決方法をお教えください よろしくお願いします --コード-- filename = Server.MapPath("graph1.gif") Set ObjChart = Server.CreateObject("OWC.Chart") Set ChaCon = ObjChart.Constants Set ObjCharts = ObjChart.Charts.Add Set SerCol = ObjCharts.SeriesCollection.Add Set SerCol2 = ObjCharts.SeriesCollection.Add 'Jiku、Jiku2に年月をセット 'Val、Val2に売上高をセット ObjCharts.Type = ChaCon.chChartTypeLineMarkers SerCol.SetData ChaCon.chDimCategories , ChaCon.chDataLiteral, Jiku SerCol2.SetData ChaCon.chDimCategories , ChaCon.chDataLiteral, Jiku2 SerCol.SetData ChaCon.chDimValues , ChaCon.chDataLiteral, Val SerCol2.SetData ChaCon.chDimValues , ChaCon.chDataLiteral, Val2 ObjCharts.Axes(ChaCon.chAxisPositionLeft).NumberFormat = "#,##0" ObjCharts.Axes(ChaCon.chAxisPositionLeft).MajorUnit = "1000" ObjCharts.Axes(ChaCon.chAxisPositionLeft).Minimum = 10000 ObjChart.ExportPicture filename, "gif", 300, 300

  • 現在、エクセルで、選択したグラフの大きさや縦横軸を統一するマクロを作成

    現在、エクセルで、選択したグラフの大きさや縦横軸を統一するマクロを作成中です。 以下のようなマクロまでは作ることができましたが、ひとつだけ不満があります。 それは、初期値です。 できれば、最初に選択したグラフの設定を初期としてダイアログの入力欄に記入してある状態にしたいのですが、どうすればよいかわかりません。 知恵を貸してください!! よろしくお願いいたします!!! Sub 選択したグラフ縦横軸変更() Dim chartObj As ChartObject Dim myObj As Object Dim xmin As Double Dim xmax As Double Dim ymin As Double Dim ymax As Double xmin = Application.InputBox("x軸最小値") xmax = Application.InputBox("x軸最大値") ymin = Application.InputBox("y軸最小値") ymax = Application.InputBox("y軸最大値") For Each myObj In Selection Set chartObj = ActiveSheet.ChartObjects(myObj.Name) With chartObj.Chart.Axes(xlCategory) .MaximumScale = xmax .MinimumScale = xmin End With With chartObj.Chart.Axes(xlValue) .MaximumScale = ymax .MinimumScale = ymin End With Next myObj End Sub

  • 任意にデータの範囲を選択し、グラフを描画したい

    質問を閲覧していただきありがとうございます。 できればみなさんのお力を貸していただきたいことがあり、質問しました。 以下にマクロ作成に用いたプログラムの仕様とコードを貼りますので、ご指摘等いただけましたら幸いです。 まず、今回のマクロの目的は ・既に存在するエクセルデータから、x軸、y軸のデータ列の長さに応じたグラフを描画するVBプログラムを書く事 です。 ・可能ならば、既存のふたつのグラフを結合したものを新しく表示する ※データシートの画像は添付しましたのでご覧ください。 以上のふたつとなります。 理想形としては、 A2 ~ A1025までをx軸のデータ、B2~B1025までの実データ値としたグラフAを一つ D2 ~ E1025までをx軸のデータ、E2~E1025までの実データ値としたグラフBを一つ 上記二つのグラフを結合したグラフを一つ の3つのグラフが自動的に作成され、エクセルファイル上に表示されている といったような感じです。 私の書いたコードの問題点としては、 ・グラフAグラフBともに「x軸と実データが正しく対応していない」 →本来両方のグラフにおいてはグラフの右端まで折れ線グラフが続いているはずですが、x軸の値にして約1000の所でデータが終わってしまっています。 ・グラフBでは、D2 ~ D344, E2 ~ E344 を基にしたグラフ一つのみが描画されているはずですが、ここには何故か二つ以上の折れ線グラフがあるようにみえ、グラフB右には系列1~5までがあるように書かれています。(理想としては5個ではなく実データを示すもの一つのみ) ・ふたつのグラフの結合方法が不明 という感じです。 以下にプログラムを貼ります。 お時間ありましたら、ご指摘の程宜しくお願い致します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sub グラフ描画() chart_title1 = "グラフA" chart_title2 = "グラフB" '軸のタイトル x_title = "周波数[Hz]" y_title = "パワー" ' -------------------------グラフ作成---------------------- ' グラフを描画 Dim chartObj1 As ChartObject Set chartObj1 = ActiveSheet.ChartObjects.Add(1, 1, 300, 200) With chartObj1.Chart ' データ範囲をセット .SetSourceData Source:=Range(Range("B2"), _ Cells(2, 1).End(xlDown)) ' x軸の項目軸範囲をセット .SeriesCollection(1).XValues = Range(Range("A2"), _ Cells(1, 1).End(xlDown)) ' オプションをセット .ChartType = xlXYScatterSmoothNoMarkers ' 散布図 .HasTitle = True .ChartTitle.Characters.Text = chart_title .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = x_title .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = y_title ' x軸の最大値、最小値設定 .Axes(xlCategory, xlPrimary).MinimumScale = 0 .Axes(xlCategory, xlPrimary).MaximumScale = 4500 ' y軸の最大値、最小値設定 .Axes(xlValue).MinimumScale = -10 .Axes(xlValue).MaximumScale = 3 End With Dim chartObj2 As ChartObject Set chartObj2 = ActiveSheet.ChartObjects.Add(1, 320, 300, 200) With chartObj2.Chart ' データ範囲をセット .SetSourceData Source:=Range(Range("E2"), _ Cells(2, 1).End(xlDown)) ' x軸の項目軸範囲をセット .SeriesCollection(1).XValues = Range(Range("D2"), _ Cells(1, 1).End(xlDown)) ' オプションをセット .ChartType = xlXYScatterSmoothNoMarkers ' 散布図 .HasTitle = True .ChartTitle.Characters.Text = chart_title .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = x_title .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = y_title ' x軸の最大値、最小値設定 .Axes(xlCategory, xlPrimary).MinimumScale = 0 .Axes(xlCategory, xlPrimary).MaximumScale = 4500 ' y軸の最大値、最小値設定 .Axes(xlValue).MinimumScale = -10 .Axes(xlValue).MaximumScale = 3 End With End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • VBAでグラフの範囲指定

    VBAでグラフ範囲指定について 先日質問させて頂いたのですが、行き詰ってしまったのでどうかご指南ください。 只今、sheet1データ一覧をダブルクリックした際にsheet2へ移り、表の詳細データが記入されるツールを作っています。 sheet2には表詳細データ以外にも、空白を挟んで他のデータが記入され、詳細データの散布図グラフが挿入されています。 sheet2に移り詳細データが表示されるようには出来ているのですが、表は12行に項目、13行からデータが始まるのは固定で、終わりの行はその都度変わるため、sheet1のダブルクリックした際のシート移動の処理の中に記述し、sheet2に記入された表データを参照して散布図のグラフを挿入したく思いました。 Dim ws2 As Worksheet Dim logGYO As Long Dim j As Long Dim x軸 As Variant Dim 系列1y軸 As Variant Dim 系列2y軸 As Variant Dim GYOMAX As Long Set ws2 = Worksheets("sheet2名前") ws2.ChartObjects("詳細グラフ").Activate ActiveChart.ChartArea.Select logGYO = 13 j = 13 Do Until ws2.Cells(j, 1).Value = "" j = j + 1 Loop GYOMAX = j - 1 With ws2 x軸 = .Range(.Cells(logGYO, 1), .Cells(GYOMAX, 1)) 系列1y軸 = .Range(.Cells(logGYO, 2), .Cells(GYOMAX, 2)) 系列2y軸 = .Range(.Cells(logGYO, 4), .Cells(GYOMAX, 4)) End With With ActiveChart.SeriesCollection(1) .XValues = x軸 .Values = 系列1y軸 .Name = "=""系列1名前""" End With With ActiveChart.SeriesCollection(2) .XValues = x軸 .Values = 系列2y軸 .Name = "=""系列2名前""" End With 実行したところ、「SeriesクラスのXValuesプロパティを設定できません」とエラーが出てしまいます。 SeriesCollection(1).Formula = "=SERIES(" & Range("B12")~ とFormulaと記述を変えて試してもみたのですが、「SeriesクラスのFormulaプロパティを設定できません」とエラーが出ます。 2週間程前までExcel自体を殆ど使ったことが無かった初心者のため、見当外れな質問をしていたら申し訳ありません。 どうか宜しくお願い致します

  • EXCELのグラフ

    下のようにVBからExcel にデータを送りグラフを表示しています。 印刷プレビューを表示したときにグラフと表が表示されてしまいます。グラフだけを表示して表は表示をしたくないのですが どうすればいいのでしょうか お願いします。 Private Sub Command1_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets.Add Dim i As Integer Dim j As Integer For i = 2 To 6 For j = 2 To 6 xlSheet.Cells(j, i) = CInt(71 * Rnd + 30) Next j Next i xlSheet.Cells(2, 1) = "国語" xlSheet.Cells(3, 1) = "数学" xlSheet.Cells(4, 1) = "英語" xlSheet.Cells(5, 1) = "社会" xlSheet.Cells(6, 1) = "体育" xlSheet.Cells(1, 2) = "石原" xlSheet.Cells(1, 3) = "小泉" xlSheet.Cells(1, 4) = "田中" xlSheet.Cells(1, 5) = "平沼" xlSheet.Cells(1, 6) = "森山" Dim MyChart As ChartObject Set MyChart = xlSheet.ChartObjects.Add(10, 100, 600, 330) With MyChart.Chart .SetSourceData xlSheet.Range("A1:F6"), xlColumns .Axes(xlValue).MaximumScale = 100 .Axes(xlValue).MajorUnit = 20 .HasTitle = True .ChartTitle.Text = "中間テスト結果" .ApplyDataLabels (xlDataLabelsShowValue) .Location xlLocationAsObject, xlSheet.Name End With xlApp.Visible = True With xlSheet.PageSetup .PaperSize = xlPaperA4 .Orientation = xlPortrait .LeftMargin = xlApp.CentimetersToPoints(2) .RightMargin = xlApp.CentimetersToPoints(2) .TopMargin = xlApp.CentimetersToPoints(2.5) .BottomMargin = xlApp.CentimetersToPoints(2.5) .HeaderMargin = xlApp.CentimetersToPoints(1) .FooterMargin = xlApp.CentimetersToPoints(1) End With xlSheet.PrintPreview Set MyChart = Nothing Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub

  • グラフの自動描画を行うときに系列名を非表示に

    下記のマクロでグラフを自動描画しています。 この中で、いくつかの点で自分の思うような描画ができていません。今は、描画後に手動にて対応していますが、できることならその手間を省きたく思っています。 ・系列名は不要 ・縦軸、横軸のフォントサイズを指定したい ・データラベルが「0(ゼロ)」の場合は表示しない 何しろマクロ初心者なものです。ご教示をお願いします。 Sub グラフ作成() With ActiveSheet.Shapes.AddChart.Chart .ChartType = xlColumnClustered .SetSourceData Range("V5:W49") End With Dim i As Long With ActiveSheet.ChartObjects(1).Chart For i = 1 To .SeriesCollection.Count .SeriesCollection(i).HasDataLabels = True Next i End With With ActiveSheet.ChartObjects(1).Chart .HasTitle = True .ChartTitle.Characters.Text = Range("W2") & "製造年別グラフ" With .ChartTitle.Format.TextFrame2.TextRange.Font .Size = 6 .Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2 End With With .Axes(xlCategory, xlPrimary) '---主軸項目軸 .HasTitle = True '---軸ラベル表示 .AxisTitle.Text = "製造年" '---軸ラベル文字列設定 .AxisTitle.Font.Size = 4 End With With .Axes(xlValue, xlPrimary) '---主軸数値軸 .HasTitle = True '---軸ラベル表示 .AxisTitle.Text = "数量" '---軸ラベル文字列設定 .AxisTitle.Font.Size = 4 End With End With End Sub

  • AccessからEXCELのグラフの操作をしたい

    AccessからExcelのシートのデータを参照して EXCELのグラフを操作しています グラフのテキストに任意の文字を入れたいのですが msoTextOrientationHorizontal で(定数が定義されていません) とコンパイルエラーになってしまいます これを回避する方法がありましたらご教授ください 初めてグラフを操作するので困っています         '// グラフのデータを設定    ActiveChart.SetSourceData Source:=Sheets("DATA").Range("B1:B7,D1:D7") '// グラフテキスト ActiveChart.ChartTitle.Text = "テスト" ' /// X数値軸ラベル" ActiveChart.Axes(xlCategory).AxisTitle.Text = "X数値軸ラベル" '/// Y数値軸ラベル ActiveChart.Axes(xlValue).AxisTitle.Text = "Y数値軸ラベル" ' '//グラフ内にテキストボックスの埋め込み With ActiveChart With .Shapes.AddTextbox(msoTextOrientationHorizontal, 13, 10, 70, 50) .TextFrame.Characters.Text = "へのへのもへじ End With End With

  • エクセルのマクロで教えてください。仕事で、種類の異なる20個のグラフを

    エクセルのマクロで教えてください。仕事で、種類の異なる20個のグラフを一つのシートに作成しますが、2個だけ内容が異なるグラフになってします この20個の散布図グラフで、クリックして選択したグラフだけ、y軸の目盛を自動スケールで最大値、最少値、目盛間隔の分割数は5個に自動にできないでしょうか? このサイトなどいくつか調べて、以下でアクティブシートのすべてのグラフ(20個)をセルに入力された値に一括で変更することはできるのですが、クリックして選択したグラフだけ、上記のようにできません。よろしくお願いします。 Sub 全部() Dim co As ChartObject For Each co In ActiveSheet.ChartObjects With co.Chart With .Axes(xlValue) .MinimumScale = Range("A1").Value '最小値 .MaximumScale = Range("A2").Value '最大値 .MajorUnit = Sheets("Sheet1").Range("A3") '目盛間隔 End With End With Next End Sub

  • ASP、OWCでの折れ線グラフ表示方法について

    現在、ASPでWEBページを作成しています。 このページ内でOffice Web コンポーネントを利用して折れ線グラフを表示しようとしています。 例えば、商品Aの売上高を折れ線グラフにする場合、折れ線が1つの場合は、下記コードにて実現できましたが、折れ線が2つ(例えば、2009年の売上高と2008年の売上高)の場合はどのように記述すれば良いのでしょうか? Office Web コンポーネントを利用するのが初めてなものでどのように調べれば良いかも分からない状況です。 よろしくお願いします。 --コード-- filename = Server.MapPath("graph1.gif") Set ObjChart = Server.CreateObject("OWC.Chart") Set ChaCon = ObjChart.Constants Set ObjCharts = ObjChart.Charts.Add Set SerCol = ObjCharts.SeriesCollection.Add 'Jikuに年月をセット 'Valに売上高をセット ObjCharts.Type = ChaCon.chChartTypeLineMarkers SerCol.SetData ChaCon.chDimCategories , ChaCon.chDataLiteral, Jiku SerCol.SetData ChaCon.chDimValues , ChaCon.chDataLiteral, Val ObjChart.ExportPicture filename, "gif", 300, 300 Response.Write "<P>グラフが作成されました。" Response.Write "<P><img src='graph1.gif'>"

  • 2次関数のグラフを書くには・・・(VB.net)

    初めまして。 プログラム未経験なのですがVB.netでログラムを組まなくてはならなくなりました。 本を読んだのですが、分からなかったので皆さんに質問させていただきます。よろしくお願いします。 タイトル通り、「描画」ボタンのクリックで 2次関数が書きたいのですが表示されません。 参考にしたプログラムは平方根のグラフ表示です。以下 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click On Error Resume Next Dim g As Graphics = CreateGraphics() g.TranslateTransform(0, ClientRectangle.Height) g.ScaleTransform(1, -1) g.Clear(BackColor) Dim x As Integer For x = 0 To 400 g.FillRectangle(Brushes.Green, x, CInt(10 * Math.Sqrt(x)), 1, 1) Next End Sub 以下は僕が以上から考えて書いたプログラムです。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click On Error Resume Next Dim g As Graphics = CreateGraphics() g.TranslateTransform(0, ClientRectangle.Height) g.ScaleTransform(1, -1) g.Clear(BackColor) Dim x, y As Integer For x = 0 To 400 Step 10 y = -1 * (x * x) + 1 g.FillRectangle(Brushes.Blue, x, 10 * (-1 * (x * x) + 1), 1, 1) Next     End Sub エラーは起きないのですがグラフが出ません。 つまらない質問かもしれませんがどうかご指導お願いいたします。。。

専門家に質問してみよう