ChartSpace veri eksenleri hk. [Archive] - Excel Forum

PDA

Tüm Versiyonu Göster : ChartSpace veri eksenleri hk.


hsayar
24-11-2008, 12:40
ChartSpace veri eksenleri hk. bir sorum var.
Şimdi şöyle;
x ekseninde 37 adet okuma tarihinin hepsinin gelmesini istiyorum. ancak 18 tanesi geliyor.
y ekseninde okuma değerlerinin gelmesini istiyorum yüzdelik dilimi geliyor ne yapmalıyım. Tepe noktası 70,38 değil 18 olacak.

http://img227.imageshack.us/img227/5440/ekranalntsiq8.jpg (http://imageshack.us)
http://img227.imageshack.us/img227/ekranalntsiq8.jpg/1/w853.png (http://g.imageshack.us/img227/ekranalntsiq8.jpg/1/)

hsayar
24-11-2008, 15:33
http://www.mrexcel.com/forum/showthread.php?t=340605
yukardıaki linkte bulduğum aşağıdaki kodlar daki gibi xvalues şeklinde denediğimde hata veriyor.



Private Sub RunWOR_Click()
Dim WORarr As Variant
Dim I, x, Y, J As Integer
Dim cell1, cell2, xrange, yrange1, yrange2, yrange3 As Range
Dim chobj As ChartObject

I = 0 'Null counter before using

With WORSheet
While .Cells(3 + I, 1) <> ""
I = I + 1 'Determine maximum number of rows
Wend
ReDim WORarr(I, 11) As Variant 'Redim array to include full range

For x = 1 To I
WORarr(x, 1) = .Cells(x + 2, 1) 'Read in the date
WORarr(x, 2) = .Cells(x + 2, 2) 'Read bbl oil/month
WORarr(x, 3) = .Cells(x + 2, 3) 'Read bbl H2O/month

WORarr(x, 4) = WORarr(x, 2) / 1000 'Convert bbl oil/month to Mbbl oil/month
WORarr(x, 5) = WORarr(x, 3) / 1000 'Convert bbl H2O/month to Mbbl H2O/month
If x = 1 Then
WORarr(x, 6) = WORarr(x, 4) 'Calculate Mbbl Oil Cum
WORarr(x, 7) = WORarr(x, 5) 'Calculate Mbbl H2O Cum
Else
WORarr(x, 6) = WORarr(x - 1, 6) + WORarr(x, 4) 'Calculate Mbbl Oil Cum
WORarr(x, 7) = WORarr(x - 1, 7) + WORarr(x, 5) 'Calculate Mbbl H2O Cum
End If
WORarr(x, 8) = WORarr(x, 4) + WORarr(x, 5) 'Calculate Mbbl Total Liquids

If (WORarr(x, 2) <> 0) Then
WORarr(x, 9) = WORarr(x, 4) / WORarr(x, 8) 'Calculate Oil Cut %
Else
WORarr(x, 9) = 0 'If no oil then oil cut is 0%
End If

WORarr(x, 10) = 1 - WORarr(x, 9) 'Water cut based on oil cut
WORarr(x, 11) = WORarr(x, 5) / WORarr(x, 4) 'WOR calculated from Mbbl rates

For Y = 1 To 8
.Cells(x + 2, Y + 4) = WORarr(x, Y + 3) 'Display calculations for graph
Next Y
Next x

J = 0
For x = 1 To I
If (WORarr(x, 9) * 100) <> 0# Then
If WORarr(x, 10) * 100 <> 0# Then
If WORarr(x, 11) * 100 <> 0# Then
J = J + 1
.Cells(J + 2, 13) = WORarr(x, 6)
.Cells(J + 2, 14) = WORarr(x, 9)
.Cells(J + 2, 15) = WORarr(x, 10)
.Cells(J + 2, 16) = WORarr(x, 11)
End If
End If
End If
Next x

.Cells(2, 14) = "Oil Cut"
.Cells(2, 15) = "Water Cut"
.Cells(2, 16) = "WOR"

Set cell1 = .Cells(3, 13)
Set cell2 = Range(.Cells(J + 2, 13))
Set xrange = Range(cell1, cell2)

cell1 = ".Cells(3, 14)"
cell2 = ".Cells(J + 2, 14)"
Set yrange1 = Range(cell1, cell2)

cell1 = ".Cells(3, 15)"
cell2 = ".Cells(J + 2, 15)"
Set yrange2 = Range(cell1, cell2)

cell1 = ".Cells(3, 16)"
cell2 = ".Cells(J + 2, 16)"
Set yrange3 = Range(cell1, cell2)

With CutCum
.Clear
.ScreenUpdating = False
.Charts.Add
.DataSource = WORSheet

With .Charts(0)
.Type = chChartTypeLineMarkers
.SeriesCollection.Add
With .SeriesCollection(0)
.SetData chDimXValues, 0, xrange
.SetData chDimYValues, 0, yrange1
.SetData chDimSeriesNames, 0, "B14"
.Line.Color = "Green"
.Marker.Size = 3
End With
.SeriesCollection.Add
With .SeriesCollection(1)
.SetData chDimXValues, 0, xrange
.SetData chDimYValues, 0, yrange2
.SetData chDimSeriesNames, 0, "B15"
.Line.Color = "Blue"
.Marker.Size = 3
End With
.HasLegend = True
.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom
.HasTitle = True
.Title.Caption = "Oil and Water Cut versus Oil Cum"
.Title.Font.Bold = True
.Title.Font.Size = 12
With .Axes(0)
.HasTitle = True
.Title.Caption = "Cumulative Oil (Mbbl)"
.Title.Font.Bold = True
.Title.Font.Size = 10
End With
With .Axes(1)
.HasTitle = True
.Title.Caption = "Oil Cut (Fraction)"
.Title.Font.Bold = True
.Title.Font.Size = 10
.Scaling.Maximum = 1
.Scaling.Minimum = 0.01
End With
With .Axes(2)
.HasTitle = True
.Title.Caption = "Water Cut (Fraction)"
.Title.Font.Bold = True
.Title.Font.Size = 10
.Scaling.Maximum = 1
.Scaling.Minimum = 0.01
End With
End With
End With
End With
End Sub

hsayar
24-11-2008, 15:40
yada aşağıda görüldüğü gibi hatam nerede?

http://www.mrexcel.com/forum/showthread.php?t=340605
With DataAOF
' .ScreenUpdating = False
For I = 2 To 5
.Cells(I, 2) = Q(I)
.Cells(I, 3) = Pwssq(I) / 10 ^ 6
Next I
For I = 1 To 5
.Cells(I + 1, 5) = Q(I)
.Cells(I + 1, 6) = LSF(I) / 10 ^ 6
.Cells(I + 1, 8) = Q(I)
.Cells(I + 1, 9) = LSFsq(I) / 10 ^ 6
Next I
.Cells(1, 2) = "Measured"
.Cells(1, 5) = "Least Squares Fit"
.Cells(1, 8) = "Laminar Flow 1/n=1"
.Cells(2, 8) = AOFc(2)
End With


With AOFChart

.Charts.Add 'Makes a new chart
.DataSource = DataAOF

With .Charts(0)
.Type = chChartTypeScatterLine
.SeriesCollection.Add 'Put in a new series
With .SeriesCollection(0)
.SetData chDimSeriesNames, 0, "B1" 'Series name is "Cole"
.SetData chDimXValues, 0, "B2:B5"
.SetData chDimYValues, 0, "C2:C5"
End With

.SeriesCollection.Add 'Make a new series
With .SeriesCollection(1)
.SetData chDimSeriesNames, 0, "E1" 'Name new series "Least Squares Fit"
.SetData chDimXValues, 0, "E2:E6" 'Set x-values to xrange
.SetData chDimYValues, 0, "F2:F6" 'Set y-values to yrange
End With

.SeriesCollection.Add 'Make a new series
With .SeriesCollection(2)
.SetData chDimSeriesNames, 0, "H1" 'Name new series "Least Squares Fit"
.SetData chDimXValues, 0, "H2:H6" 'Set x-values to xrange
.SetData chDimYValues, 0, "G2:G6" 'Set y-values to yrange
End With
.HasLegend = True
.HasTitle = True 'Chart has a title
End With

' .ScreenUpdating = True
End With


burada da microsoftun kendi kodları var ama örnek sayfa nasıl oluşturacağım, anlayamadınm.
http://support.microsoft.com/kb/235885

hsayar
25-11-2008, 07:38
fikirlerinizi paylaşırmısınız?

hsayar
25-11-2008, 16:46
chartspace olmasada olur, Spreadsheetteki verilere göre userform üzerinde dinamik grafik nasıl çizilir?

bugmenot
25-11-2008, 22:07
bugmenot

form a aldığınız excel grafik kapsama alanını genişletmeyi denediniz mi?
butonla kaydıralım
zaten "37 okunma kaydı bulundu" diyor.

hsayar
26-11-2008, 08:07
sn bugmenot olabilir, yalnız unutulmaması gerekn şu; Sayaç No combosundan başka biri seçildiği zaman belki 5 adet belki 100 adet okuma kaydı olacak yani okuma kaydı sayısı herkes için aynı değil.
Birde resimde göürldüğü gibi x ekseninin 12/03/2008 değeri (grafikte 16/03/2008 olarak gözüküyor) y ekseninde 70,3801 olarak gözüküyor bu değerin aslında 18 olması lazım (bakınız spreadsheet 12/03/2008 satırı Kapasitif değeri sütunu)

hsayar
26-11-2008, 21:56
yardımlar ve fikirler için teşekkür ederim.

hsayar
27-11-2008, 12:15
Siz SpreadShette raporlanan verilerin dinamik grafiğini almak için nasıl bir uol izlerdiniz?
o şekilde de yardımcı olsanız olur.

hsayar
29-11-2008, 07:37
Siz SpreadShette raporlanan verilerin dinamik grafiğini almak için nasıl bir uol izlerdiniz?
o şekilde de yardımcı olsanız olur.
güncel. ilgilnenlere teşekkür ederim.

Ferhat Pazarçevirdi
29-11-2008, 12:43
OWC Spreadsheet ve ChartSpace nesnelerinin, belirttiğiniz şekliyle kullanımı için, ekteki örneği inceleyiniz.

Bu çalışmada; rastgele boyutta ve değerde iki veri serisi üretilerek, grafik revize edilmektedir.

Kullanılan Nesneler : UserForm, OWC11-SpreadSheet, OWC11-ChartSpace, CommandButton

Kodlama şu şekildedir. (Tamamı Userform kod modulüne ...)


Dim iSonsatir As Integer
'------------------------
Private Sub CommandButton1_Click()
'Rassal olarak Yeni Veri Serilerimim ürerilmesi
Call Serileri_Yeniden_Uret
'Üretilen Veri Serilerine göre grafiğin çizlmesi
Call Grafigi_Yeniden_Ciz
End Sub
'--------------------------
Private Sub UserForm_Initialize()
Me.Caption = "OWC11 Spreadsheet ve ChartSpace Nesnelerinin Kullanımı için Örnek ..."
'Spreadsheet'in şekillendirilmesi
With Spreadsheet1

.DisplayOfficeLogo = False
.DisplayTitleBar = False
.DisplayToolbar = False

With .ActiveWindow
.DisplayColumnHeadings = False
.DisplayRowHeadings = False
.DisplayWorkbookTabs = False
.DisplayHorizontalScrollBar = False
End With

End With
'Rassal olarak Yeni Veri Serilerinim ürerilmesi
Call Serileri_Yeniden_Uret
'Üretilen Veri Serilerine göre grafiğin çizlmesi
Call Grafigi_Yeniden_Ciz

End Sub
'-----------------------
Private Sub Serileri_Yeniden_Uret()

Dim i As Integer
Dim iSatirSayisi As Integer

Randomize

iSatirSayisi = CInt(Rnd() * 50) + 2

With Spreadsheet1
.Cells.Clear
.ActiveWindow.ViewableRange = "A1:C1000"

.Cells(1, 1) = "Kategoriler"
.Cells(1, 2) = "Seri-1"
.Cells(1, 3) = "Seri-2"

For i = 2 To iSatirSayisi
x = x + 1
.Cells(i, 1) = "Veri-" & x
.Cells(i, 2) = CInt(Rnd() * 1000)
.Cells(i, 3) = CInt(Rnd() * 500)
Next i

iSonsatir = .Cells(1000, 1).End(xlUp).Row

.ActiveWindow.ViewableRange = "A1:C" & iSonsatir

End With
End Sub
'----------------------------
Private Sub Grafigi_Yeniden_Ciz()
With ChartSpace1
.Clear
.DataSource = Spreadsheet1
.Charts.Add
With .Charts(0)
.Type = chChartTypeLine
.SeriesCollection.Add
With .SeriesCollection(0)
.SetData chDimCategories, 0, Spreadsheet1.Range("A2:A" & iSonsatir).Address
.SetData chDimValues, 0, Spreadsheet1.Range("B2:B" & iSonsatir).Address
.Line.Color = "Green"
.Marker.Size = 3
End With

.SeriesCollection.Add
With .SeriesCollection(1)
.SetData chDimCategories, 0, Spreadsheet1.Range("A2:A" & iSonsatir).Address
.SetData chDimValues, 0, Spreadsheet1.Range("C2:C" & iSonsatir).Address
.Line.Color = "Red"
End With
End With
End With
End Sub

hsayar
29-11-2008, 13:45
teşekkür ederim hocam. inceleyip uyarlamayqa çalışacağım.

hsayar
29-11-2008, 13:58
Hocam bunu Standart Grafik nesnesinde yapabildiğinizx biliyorum. peki Chartspace nesnesinde seri1 değeri 300 ü aşan kısımın grafik rengi turuncu olsun tekrar 300 ün altına düşünce kırmızı olsun bu münkün mü?

Ferhat Pazarçevirdi
29-11-2008, 18:10
Hocam bunu Standart Grafik nesnesinde yapabildiğinizx biliyorum. peki Chartspace nesnesinde seri1 değeri 300 ü aşan kısımın grafik rengi turuncu olsun tekrar 300 ün altına düşünce kırmızı olsun bu münkün mü?

Bu bahsettiğiniz olayın temelinde; "XY Dağılım" grafiği vardır. Oysa ki; OWC içeren şu anki proje "Çizgi" grafik tipine göre dizayn edilmiştir. Onun için, grafik tipini değiştirmeden; iki nokta arasında kalan çizgilerin bir kısmının rengini turuncu, diğer kısmını kırmızı yapamazsınız.

Kaldı ki bahsettiğiniz olayı; XY Chart kullanılarak, sayfa üzerinde bile yapmak için, Geometrik hesaplamalar yapmak gerekir ki; attığımız taş ürküttüğümüz kuşa değer mi bilemiyorum. Çünkü, Y=300 noktasından geçen bir çizginin, diğer grafik çizgilerini kestiği noktalarının koordinatlarını bulmak gerekir. Yapılmaz değil ama, tam bir işkence olur :)

hsayar
29-11-2008, 19:07
Bu bahsettiğiniz olayın temelinde; "XY Dağılım" grafiği vardır. Oysa ki; OWC içeren şu anki proje "Çizgi" grafik tipine göre dizayn edilmiştir. Onun için, grafik tipini değiştirmeden; iki nokta arasında kalan çizgilerin bir kısmının rengini turuncu, diğer kısmını kırmızı yapamazsınız.

Kaldı ki bahsettiğiniz olayı; XY Chart kullanılarak, sayfa üzerinde bile yapmak için, Geometrik hesaplamalar yapmak gerekir ki; attığımız taş ürküttüğümüz kuşa değer mi bilemiyorum. Çünkü, Y=300 noktasından geçen bir çizginin, diğer grafik çizgilerini kestiği noktalarının koordinatlarını bulmak gerekir. Yapılmaz değil ama, tam bir işkence olur :)

vazgeçtim hocam işkeneceye gerek yok. :)
Bunu istememin temel nedeni Yapmaya çalıştığım reaktif / aktif takip programında belli bir değeri aşan (,18) kısmınz kzarması normalin yeşil gözükmesi idi ama bunu SpreadSheetüzerindede gösterebilirim.

hsayar
01-12-2008, 15:42
değerli hocam dosya işyerinde olduğu içn henüz deneyebildim... prosodürünüzü aşağıdaki gibi değiştirmeme rağmen sonuca ulaşamadım:


Private Sub Grafigi_Yeniden_Ciz()
iSonsatir = sprCsf.Range("A100").End(xlUp).Row

With chrOkumalar
.Clear
.DataSource = sprOkumalar
.Charts.Add
With .Charts(0)
.Type = chChartTypeLine
.SeriesCollection.Add
With .SeriesCollection(0)
.Caption = "Reaktif/Aktif"
.SetData chDimCategories, 0, sprOkumalar.Range("A2:A" & iSonsatir).Address
.SetData chDimValues, 0, sprOkumalar.Range("f2:f" & iSonsatir).Address
.Line.Color = "Green"
.Marker.Size = 3
End With

.SeriesCollection.Add
With .SeriesCollection(1)
.Caption = "Kapasitif/Aktif"
.SetData chDimCategories, 0, sprOkumalar.Range("A2:A" & iSonsatir).Address
.SetData chDimValues, 0, sprOkumalar.Range("g2:g" & iSonsatir).Address
.Line.Color = "Red"
End With

' With .Axes(chAxisPositionLeft)
' .Scaling.Maximum = 1
' .Scaling.Minimum = 0
' ' .NumberFormat = "0.0%"
' .HasMajorGridlines = False
' End With
'
' With .Axes(chAxisPositionBottom)
' '.Scaling.Maximum = 30
' '.Scaling.Minimum = 0
' .NumberFormat = "dd.mm.yyyy"
' .HasMajorGridlines = False
' End With
.PlotArea.Interior.Color = "white" ' Display the legend.
.HasLegend = True
.Legend.Position = chLegendPositionBottom
End With
End With
End Sub
x ekseninde 3 yerine daha fazla tarih geliyor. ben okuma kaydı kadar tarih gelsin istiyorum hatam nerede?

http://img392.imageshack.us/img392/1252/ekranalntschartlb5.jpg (http://imageshack.us)
http://img392.imageshack.us/img392/ekranalntschartlb5.jpg/1/w856.png (http://g.imageshack.us/img392/ekranalntschartlb5.jpg/1/)

hsayar
02-12-2008, 16:55
Sorunumu çözdüm gibi yalnız bir sorun kaldı, o da Chartspace nesnesinde değerleri ters sırada göster komutunun vba karşılığı yardımlar için teşekkür ederim.


http://img254.imageshack.us/img254/2222/chartspacekategori1komumo9.jpg (http://imageshack.us)



Private Sub Grafigi_Yeniden_Ciz()
isonsatir = sprCsf.Range("A100").End(xlUp).Row
Dim arrYatEks1(), arrDikEks1(), arrDikEks2()
With sprCsf
.Unprotect
.Columns("A:H").Sort 1, xlAscending, xlYes
grfYatEks1 = .Range("a2:a" & isonsatir).Address
grfDikEks1 = .Range("f2:f" & isonsatir).Address
grfDikEks2 = .Range("G2:G" & isonsatir).Address

' For I = 2 To iSonsatir
' ReDim Preserve arrYatEks1(I - 1)
' ReDim Preserve arrDikEks1(I - 1)
' ReDim Preserve arrDikEks2(I - 1)
' arrYatEks1(I - 2) = .Range("H" & I).Value
' arrDikEks1(I - 2) = .Range("F" & I).Value
' arrDikEks2(I - 2) = .Range("G" & I).Value
' Next I
' Stop
End With
With chrOkumalar
.Clear
.DataSource = sprOkumalar
.Charts.Add
With .Charts(0)
.Type = chChartTypeLine
.SeriesCollection.Add
With .SeriesCollection(0)
.Caption = "Reaktif/Aktif"
' .SetData chDimCategories, 0, sprCsf.Range("H2:H" & isonsatir).Address
' .SetData chDimValues, 0, sprCsf.Range("f2:f" & isonsatir).Address
.SetData chDimCategories, 0, grfYatEks1
.SetData chDimValues, 0, grfDikEks1
.Line.Color = "Green"
.Marker.Size = 3
End With

.SeriesCollection.Add
With .SeriesCollection(1)
.Caption = "Kapasitif/Aktif"
' .SetData chDimCategories, 0, sprCsf.Range("H2:H" & isonsatir).Address
' .SetData chDimValues, 0, sprCsf.Range("g2:g" & isonsatir).Address
.SetData chDimCategories, 0, grfYatEks1
.SetData chDimValues, 0, grfDikEks2
.Line.Color = "Red"
End With
With .Axes(chCategoryAxis)
.HasMajorGridlines = True
.Orientation = 90
.GroupingType = chAxisGroupingNone
.Font.Color = vbBlue

'.ReversePlotOrder = True
End With

' Stop
' With .Axes(chAxisPositionLeft)
' .Scaling.Maximum = 1
' .Scaling.Minimum = 0
' ' .NumberFormat = "0.0%"
' .HasMajorGridlines = False
' End With
'



.PlotArea.Interior.Color = "white" ' Display the legend.
.HasLegend = True
.Legend.Position = chLegendPositionBottom
End With
End With
With sprCsf
.Columns("A:H").Sort 1, xlDescending, xlYes
.Protect
End With
End Sub

hsayar
03-12-2008, 08:53
[quote=hsayar;324841]Sorunumu çözdüm gibi yalnız bir sorun kaldı, o da Chartspace nesnesinde değerleri ters sırada göster komutunun vba karşılığı yardımlar için teşekkür ederim.
[/quate]

Güncel...

hsayar
03-12-2008, 16:54
[quote=hsayar;324841]Sorunumu çözdüm gibi yalnız bir sorun kaldı, o da Chartspace nesnesinde değerleri ters sırada göster komutunun vba karşılığı yardımlar için teşekkür ederim.
[/quate]



Güncel... vba karşılığ nedir?

hsayar
06-12-2008, 23:46
17. mesajdaki sorum güncelliğini korumaktadır.
Saygılarımla.

hsayar
10-12-2008, 17:26
17. mesajdaki sorum güncelliğini korumaktadır.
Saygılarımla.


Özel Arama