tchart 的x軸文字之問題 |
尚未結案
|
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
引言:請參考它所附的Source procedure TStatProbSeries.OnGetLabel(Sender: TChartAxis; Series: TChartSeries; ValueIndex: Integer; var LabelText: String); var tmp : Double; tmpSt : String; begin if (Sender = GetVertAxis) and (FProbSeriesType <> stQQSeries) then try tmpSt := LabelText; While Pos(ThousandSeparator,tmpSt)>0 do System.Delete(tmpSt,Pos(ThousandSeparator,tmpSt),1); tmp:=StrToFloat(tmpSt); Case FProbSeriesType of stNormalSeries : tmp := NormalCDF(tmp,0,1); stWeibullSeries : tmp := 1.0 - 1.0/(Exp(Exp(tmp))); end; LabelText:=FormatFloat(Sender.AxisValuesFormat,tmp); except on EConvertError do ; end; end;在TStatProbSeries.ProbSeriesType in [stNormalSeries,stWeibullSeries]時, 左邊的Label為0~1,如果你的數值超過則都顯示1。 還有另一種stQQSeries則是可以顯示超出0~1。 |
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
引言:TChartAxis.LabelsSeparation 該屬性Help property LabelsSeparation: Integer; Unit TeEngine Description Default Value: 10 The LabelsSeparation property specifies the percent amount of minimum distance between Axis Labels. Setting it to "0" zero makes TChartAxis skip calculating overlapping labels. (No clipping is performed). Labels visibility depends also on LabelsFont size, LabelsAngle and Axis Increment properties.如下圖所示將Min Separation設為0 |
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
引言: 請教一下那條 slope pen為何執行時會 沒有看到 procedure TfrmQQPlot.Recalc; begin //計算回歸曲線 StatQQPlot(XData,YData,X,Y,MinX,MaxX,MinY,MaxY,false,false); ProbSeries.MinX := MinX; ProbSeries.MaxX := MaxX; ProbSeries.MinY := MinY; ProbSeries.MaxY := MaxY; //畫點 DrawValues(X,Y,ProbSeries); end; //Source procedure TStatProbSeries.DoAfterDrawValues; var P1,P2: TPoint; begin if (FSlopePen.Visible) then begin P1.x := CalcXPosValue(minX); P1.y := CalcYPosValue(minY); P2.x := CalcXPosValue(maxX); P2.y := CalcYPosValue(maxY); With ParentChart,ParentChart.Canvas do begin Brush.Style := bsClear; AssignVisiblePen(FSlopePen); ClipRectangle(ChartRect); MoveTo(P1.x,P1.y); LineTo(P2.x,P2.y); UnClipRectangle; end; end; inherited DoAfterDrawValues; end; |
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
引言:1.不畫的點應該在載入資料時就要把它濾掉 2.或者TChartSeries.ValuesList中新增刪除, 用另一個TChartValueLists or TList物件 把刪除的紀錄起來以便復原。 |
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
你好:
我宣告了XData及YData MinX ........
private
CtData,TdData,HtData,PtData,XData,YData: TVec;
MinX,MinY,MaxX,MaxY:integer;
並且對程式寫了
//散佈圖
XData:=Tvec.Create;
YData:=Tvec.Create;
try
XData.LoadFromFile('Dt_x.vec');
except
end;
try
YData.LoadFromFile('Dt_y.vec');
except
end;
MinX:=1;
MaxX:=9;
MinY:=1;
MaxY:=12;
//計算回歸曲線
StatQQPlot(XData,YData,x,y,MinX,MaxX,MinY,MaxY,false,false);
DtSeries.MinX := MinX;
DtSeries.MaxX := MaxX;
DtSeries.MinY := MinY;
DtSeries.MaxY := MaxY; 但還是會出錯
StatQQPlot 內的變數 要帶入什麼值呢? ,可否說明一下。 還有 您剛才回答的問題,我看不太懂!!
可否也說明一下(或舉個例子)
1.不畫的點應該在載入資料時就要把它濾掉
2.或者TChartSeries.ValuesList中新增刪除,
|
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
|
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
引言: 你好: 我宣告了XData及YData MinX ........ private CtData,TdData,HtData,PtData,XData,YData: TVec; MinX,MinY,MaxX,MaxY:integer; 並且對程式寫了 //散佈圖 XData:=Tvec.Create; YData:=Tvec.Create; try XData.LoadFromFile('Dt_x.vec'); except end; try YData.LoadFromFile('Dt_y.vec'); except end; MinX:=1; MaxX:=9; MinY:=1; MaxY:=12; //計算回歸曲線 StatQQPlot(XData,YData,x,y,MinX,MaxX,MinY,MaxY,false,false); DtSeries.MinX := MinX; DtSeries.MaxX := MaxX; DtSeries.MinY := MinY; DtSeries.MaxY := MaxY; 但還是會出錯 StatQQPlot 內的變數 要帶入什麼值呢? ,可否說明一下。 還有 您剛才回答的問題,我看不太懂!! 可否也說明一下(或舉個例子) 1.不畫的點應該在載入資料時就要把它濾掉 2.或者TChartSeries.ValuesList中新增刪除,StatQQPlot(XData,YData,x,y,MinX,MaxX,MinY,MaxY,false,false); XData跟YData是原始資料,X跟Y(TVec)則是繪製的資料(帶入時是空的) ,MinX~MaxY則是此Function計算回傳,後面兩個則是XData跟YData是否已經 排序 原文Help Constructs the Quantile-Quantile Chart. Unit StatSeries Declaration Procedure StatQQPlot(XData, YData: TVec; XDrawVec, YDrawVec: TVec; var MinX, MaxX, MinY, MaxY: TSample; XDataSorted: boolean = true; YDataSorted: boolean = true); Description Constructs the Quantile-Quantile Chart. Use TStatProbSeries to visualize/plot constructed values. Parameters XData X Data. YData Y Data. XDataSorted If true, algorithm assumes XData is already sorted in ascending order. If XData is not sorted, you must set this parameter to false so that internal algorithm will automatically do the sorting. YDataSorted If true, algorithm assumes YData is already sorted in ascending order. If YData is not sorted, you must set this parameter to false so that internal algorithm will automatically do the sorting. XDrawVec Retunrs vector of X values to be drawn. YDrawVec Returns vector of Y values to be drawn. minX,minY Returns slope line start point. These value are used by TStatProbSeries series. maxX,maxY Returns slope line end point. These value are used by TStatProbSeries series. Category Probabilities plots1.不畫的點應該在載入資料時就要把它濾掉 ->原始資料經過統計(此時還是原始資料)之後, 在塞入供TChart繪圖資料陣列時就先判斷該數值是 否超出界線,超出的話就不塞入。 2.或者TChartSeries.ValuesList中新增刪除 ->ValuesList裡儲存了各點的數值(TChartValueList), TChartValueLists是由TList繼承下來,TList的用法請 搜尋舊文章。 後來翻說明文件不能夠直接新增刪除,必須透過TChartSeries 所提供的property&Method( Add AddArray AddNull AddNullXY AddX AddXY AddY Count Delete XValue XValues YValue YValues )來運作。請查閱TChartSeries的Help中Method 說明。 |
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
|
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
|
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
我手動設成1了
但是,依然由0跳2 跳4.....
真奇怪! 畫曲線 ok了 非常謝謝你 但是排除資料的問題,依舊不會 引言:
---------------------------------------------------------------------- 有辦法可以更換它的OnGetLabel 嗎? 很不幸地它是寫在protected裡,
1.所以要改寫的話再繼承下來再改寫。
2.或者不要繼承,依照它寫的元件再複製一份,
取別的class name,然後把那部分自己修改。 ---------------------------------------------------------------------- 有其它方法可以解決嗎
|
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
|
StrongLemon
高階會員 ![]() ![]() ![]() ![]() 發表:10 回覆:166 積分:105 註冊:2004-04-18 發送簡訊給我 |
引言: 我手動設成1了 但是,依然由0跳2 跳4..... 真奇怪!Axis的Max調小一點,再慢慢加大,你會發現到一定值就會跳 引言: 引言: ---------------------------------------------------------------------- 有辦法可以更換它的OnGetLabel 嗎? 很不幸地它是寫在protected裡, 1.所以要改寫的話再繼承下來再改寫。 2.或者不要繼承,依照它寫的元件再複製一份, 取別的class name,然後把那部分自己修改。 ---------------------------------------------------------------------- 有其它方法可以解決嗎上幾個回覆裡面有提到 "還有另一種stQQSeries則是可以顯示超出0~1。" TStatProbSeries.ProbSeriesType=stQQSeries就可以是普通數值了啊。 不知道你想要更換它的OnGetLabel用意在哪? |
seedbcc
高階會員 ![]() ![]() ![]() ![]() 發表:232 回覆:272 積分:105 註冊:2003-12-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |