顯示具有 chart 標籤的文章。 顯示所有文章
顯示具有 chart 標籤的文章。 顯示所有文章

2025年3月10日 星期一

請 Chatgpt 分析圖表

雖說技術是我用於輔助參考,但感謝作者的分享,原本小鹿有用 embedding之外,還可以用此方式使用 OPENAI 

參考影片教學 

https://youtu.be/JvhNF86PYJY?si=ql-2v3MhyU1xoK8P

2016年4月21日 星期四

mongoDB .Net Driver 使用 MapReduce

目前有一個需求,在 mongoDB的一個 collection,有一個屬性 created_date記錄資料建立時的日期,我希望利用這個屬性,以30天為一個單位找出每個間隔日期,在關連式資料庫會使用如下 SQL來完成需求:

SELECT CONVERT(varchar(10), DATEADD(d, (datediff(d,GETDATE(),created_date) /30)*30,GETDATE()),111)
 FROM [DATA].[dbo].[expense]
 group by CONVERT(varchar(10), DATEADD(d, (datediff(d,GETDATE(),created_date) /30)*30,GETDATE()),111)

這樣捉出來的資料如下:
2015/12/23
2015/10/24
2015/11/23

而我的專案是 ASP.Net MVC 5,所以有使用 mongoDB .Net Driver 2.2,一開始利用 LINQ寫法如下:
 var query = fRepo.GetAll().GroupBy(x =>
             DateTime.Now.AddDays(((int)(DateTime.Now.Subtract(DateTime.ParseExact(x.Date, "yyyy/MM/dd", System.Globalization.CultureInfo.InvariantCulture)).TotalDays) / Day30) * (-1 * Day30)).ToString("yyyy/MM/dd")
      
           ).Select(x => new DayPeriod { date1 =x.Key) }).OrderBy(x => x);

2016年3月11日 星期五

Java script chart

參考文章:15 JavaScript Libraries for Creating Beautiful Charts

這篇文章可以找到很多 chart元件可以使用,但有一些是沒有圖的物件,是要再額外再引用其它 library才可以。有的元件並非完全免費,有商業的版本,我測試後的分享如下:

ChartJS 目前專案有在使用,免費,目前版本 1.0.2,直接好用(但我更懷念那時開發 Flex程式就有內建的 Chart,那才是好用),今年應該會出 V2的版本

Chartist 還沒使用過,應該也是免費,但官網的 demo還不錯,可以試試

Google Chart 應該很多人在用,直接引用網路上的 library即可

Highcharts 商業用途必需收費,動畫方面表現好

Fusioncharts 商業用途也是要收費,使用免費版會有浮水印

Amcharts 有免費版但畫面都會出現官網連結,圖很多可以試試

CanvasJS 商業用途也是要收費,強調速度快

Angular-FusionCharts Angular + Funcsioncharts,有使用 Angular可以直接試試

2010年9月8日 星期三

Flex Chart 動態 series

一般的圖表設計,會在 Tag mx:series 內新增多個 series ,然後每個對應不同的欄位 (yField or xField),
因為來自不同欄位,所以可以這樣作,但如果值是來自相同欄位的話,而另一個欄位則儲存分類的類別值,如
Sales Man Date Amount
Sales A 2010/01/01 100
Sales B 2010/01/01 200
不同的 Sales Man就是代表一條線,那要怎麼作呢,這邊有範例可以參考,使用XML方式,而程式碼的部份資料來源是使用 ArrayCollection,應該就可以達成其功能了。

Dynamic Create Series By XML Data Source


coding

try {
var wholist:Array = new Array();
var property:String ;

//partXRData is an arraycollection
for(var i:int =0; i property = partXRData.getItemAt(i).USER_NAME as String;
if (wholist[property] == null){
wholist[property] = new ArrayCollection();

}

(wholist[property] as ArrayCollection).addItem(partXRData.getItemAt(i));

}

var currentSeries:Array = new Array();


var count1:int = 0;
var localSeries:LineSeries = null;
for each (var ac1:ArrayCollection in wholist) {

// Create the new series and set its properties.
localSeries = new LineSeries();
localSeries.dataProvider = ac1;
localSeries.yField = "AVERAGE1";
localSeries.xField = "VALUE_SN";


// Set values that show up in dataTips and Legend.
localSeries.displayName = ac1.getItemAt(0).USER_NAME;

// Back up the current series on the chart.

// Add the new series to the current Array of series.
currentSeries.push(localSeries);


}
// Add the new Array of series to the chart.
avgChart1.series = currentSeries;

}catch(error:Error) {

}