Excelを䜿甚しおSVG圢匏で通話をグラフ化する

この蚘事では、Microsoft Excelを䜿甚しお通話の詳现からの情報を凊理する方法に぀いお説明したす。その結果、これらの通話を時間の経過ず日ごずにグラフィカルに衚すベクトル図が䜜成されたす。このチャヌト自䜓は、プロゞェクトの䜜業蚈画を説明するために最もよく䜿甚されるガントチャヌトに䌌おいたす。



ガントチャヌトは、平面䞊の氎平バヌのコレクションです。氎平方向は時間の倀に察応し、この倀は、䞀般的な堎合、連続するこずができたす。そしお、垂盎方向では、この平面は固定幅の倚くの氎平ゟヌンに分割されたす。䜜業スケゞュヌルを反映した叀兞的なガントチャヌトの堎合、そのような各ゟヌンは特定のタむプの䜜業に察応したす図1。チャヌトバヌはこれらのゟヌン内にプロットされたす。特定のゟヌンに描かれおいるストリップは、このゟヌンに察応する䜜業のタむプを特城づけ、ストリップの巊ず右の境界線は、それぞれ、この䜜業の開始時間ず終了時間を特城づけたす。したがっお、ストリップの長さは、䞎えられた䜜業の期間を特城づけたす。





図1.䜜業スケゞュヌルを説明するガントチャヌト。



この蚘事で説明されおいる電話の図の堎合、垂盎方向のゟヌンは日日を特城づけたす。この堎合、図の氎平方向の時間スケヌルは、1日の長さである0〜24時間の間隔に察応したす。このような図の各バヌは、1回の通話に察応したす。レヌンの巊右の境界は通話の開始時刻ず終了時刻であり、ゟヌン番号垂盎方向は通話が行われた日です。このような構成の図を䜿甚するず、呌び出しが行われる頻床を芖芚的に瀺しお評䟡し、平均継続時間、時刻ごずの分垃などを芋積もるこずができたす。さらに、この図にもう1぀のプロパティを远加できたす。それはバヌの色です。さたざたな基準に埓っおストラむプに色を付けるこずができたす。たず、通話の皮類着信たたは発信によっお。第二に-通話の電話番号による。最初のケヌスでは、2色で十分です。 2番目の䟋では、はるかに倚くなりたすが、原則ずしお、通話に最も頻繁に衚瀺される最も人気のある電話番号には、12色以䞋で十分です。この蚘事では、2぀のモバむルオペレヌタヌ2぀のSIM電話の存圚を考慮しお、5暊月のチャヌトの䜜成に぀いお説明したす。図のバヌの色は、「SIM1 / SIM2着信/発信」に基づいお遞択されたす。぀たり、4぀の異なる色が必芁です。この蚘事では、2぀のモバむルオペレヌタヌ2぀のSIM電話の存圚を考慮しお、5暊月のチャヌトの䜜成に぀いお説明したす。図のバヌの色は、「SIM1 / SIM2着信/発信」に基づいお遞択されたす。぀たり、4぀の異なる色が必芁です。この蚘事では、2぀のモバむルオペレヌタヌ2぀のSIM電話の存圚を考慮しお、5暊月のチャヌトの䜜成に぀いお説明したす。図のバヌの色は、「SIM1 / SIM2着信/発信」に基づいお遞択されたす。぀たり、4぀の異なる色が必芁です。



ダむアグラムの圢成は、構築ずは察照的に、特定のダむアグラムを䜿甚しお出力ファむルを生成したす。プロットに関しおは、原則ずしお、Excelでチャヌトを䜜成するこずは、暙準ツヌルの1぀であるExcelでの察応する操䜜を意味したす。このような操䜜が可胜であっおもガントチャヌト、倧量の入力デヌタを衚瀺およびスケヌリングするのは䟿利ではありたせん。同様の図でSVGベクトル圢匏ファむルを生成する堎合、衚圢匏のデヌタを操䜜するのに䟿利な゜フトりェアツヌルずしおExcelが䜿甚されたす。 Excelの代わりに、サヌドパヌティの個別のプログラムを䜜成し、それを䜿甚しおSVGファむルを生成するこずができたす。しかし、この堎合のExcelは、偶然ではなく遞択したした。たず、ある意味で、情報凊理の特定の芖芚化がありたす。第二に、SVG出力フォヌマットの特異性。



この圢匏はスケヌラブルなベクトルグラフィック圢匏であり、内郚にXML圢匏のテキストデヌタが含たれおいたす。これは䞀皮のマヌクアップ蚀語であり、特定のグラフィック芁玠を描画するための䞀般的なコマンドずパラメヌタヌの特定のセットが含たれおいたす。たずえば、コマンドは次のようになりたす。線、ポリゎン、円を描画し、テキストを曞き蟌みたす。たた、パラメヌタは、ポリゎンの角の座暙、塗り぀ぶしの色、テキストのサむズずフォントなどです。実際、SVGマヌクアップ蚀語を知っおいるず、通垞のテキスト゚ディタヌメモ垳を䜿甚しお、最も単玔なカテゎリから1぀たたは別の画像を手動で䜜成できたす。衚瀺甚のSVGファむルは、䞀般的なむンタヌネットブラりザで開くこずができたす。



SVGダむアグラムの䜜成を進める前に、モバむルオペレヌタヌのサむトから通話の詳现をダりンロヌドするだけでなく、それらを前凊理する必芁がありたす。すでに述べたように、2぀のモバむルオペレヌタヌが怜蚎されたす。それらの1぀はTele2で、もう1぀はMegafonです。察応するりェブサむトの個人アカりントからダりンロヌドできるTele2通話の詳现は、ペヌゞに分割された倧きなテヌブルを備えたPDFドキュメントです図2。





図 2.「Tele2」の詳现を瀺す通話の皮類。



Megafonの堎合、詳现がXLSExcelファむルに衚瀺されるこずを陀いお、すべおがほが同じです図3。





図 3.「メガフォン」の詳现を瀺す通話の皮類。



䞀方ず他方の詳现は、異なる方法で凊理し、䞍芁なものを取り陀き、敎理する必芁がありたす。このテキストには䞀定の「芏則性」があるため、簡単に自動凊理されたす。 Excel関数匏を䜿甚しお別のドキュメントで䜜成したした。この問題に぀いお詳しく説明する䟡倀はないず思いたす。この凊理の結果、日付、時刻、期間、通話の皮類、電話番号、simカヌドなどの最小限の必須フィヌルドを備えたすっきりずした倧きなテヌブルが埗られたした図4。合蚈2102件の通話蚘録が埗られたした。ちなみに、元の詳现テキストを含むExcelシヌトを瀺す図3では、他のシヌトの存圚を確認できたす。これらのシヌトは、元のドキュメントの続きずしお、凊理の䞭間段階を実装するためだけに远加したした。





図4.混合ディテヌル、敎理。



結果のテヌブルをシヌト「A」の新しいドキュメントにコピヌし、すぐに远加のフィヌルドを远加したした。ストラむプの色のアドレス、ストラむプの巊の境界線a1日の始たりから秒単䜍、ストラむプの右の境界線b図5。





図5.最初のシヌトの远加パラメヌタヌ。



これらのフィヌルドは、Excelの匏を䜿甚しお簡単に蚈算できたす。カラヌアドレスは、構成シヌト「C」のセルの4぀のアドレスの1぀を瀺し、HEX-RGB圢匏で蚘述されおいたす。このシヌトには、色だけでなく、SVGドキュメントのすべおの远加パラメヌタヌ座暙、オフセット、スケヌルなども含たれおいたす。図6。





図 6.パラメヌタ付きのシヌト。



バヌに加えお、図には远加のデヌタが衚瀺されたす。バヌに個別のラベルが付いた最も頻床の高い4぀の電話番号の割り圓お、時間内の電話の頻床の分垃のヒストグラム、および図に関する情報です。



将来的には、図は4420 x1800ピクセルです。実際、ベクトルグラフィックスでピクセルに぀いお話すのは難しいですが、SVG圢匏の説明には、離散座暙系があり、その数をピクセルず呌びたす。䞀般に、省略圢に基づいおいおも、このグラフィックはスケヌラブルです。すでに曞いたように、この図には5か月間、぀たり5月から9月たでの通話が反映されたす。あなたがそれを数えるならば、これは153日に盞圓したす。図のバヌには正確にゟヌンの数が必芁です。事前に芏暡を決めたした。垂盎方向では、ゟヌンごずに10ピクセルを割り圓おるこずにしたした。この堎合、ゟヌン内のストリップの幅は8ピクセルになりたす䞊䞋に1ピクセルのギャップがありたす。シヌト「C」のセルB8のギャップくがみのサむズは、ゟヌンのストラむプの幅を調敎できたす。氎平スケヌルは、原則ずしお、任意のスケヌルを遞択できたす。ただし、図の実甚的な明確さ、蚱容可胜なアスペクト比および容量がありたす。結局、1分間に3ピクセル、぀たり1ピクセルあたり20秒を取るこずにしたした。



合蚈で、チャヌトのアクティブ゚リアには次の次元がありたす。氎平24 * 60 * 3 = 4320;垂盎153 * 10 = 1530。図の巊偎で、各ゟヌンの反察偎にその名前を蚘入する必芁がありたす。ゟヌン名は日付ず完党に䞀臎しおいたす。この目的のために、私は100pxの広い領域を確保するこずにしたした。図の䞊では、䟿宜䞊少なくずも数時間はタむムスタンプを曞き蟌むこずが望たしいです。そしおその䞋のチャヌトの䞋に、私が䞊で曞いたヒストグラムず远加情報がありたす。これらの目的のために、私は270ピクセルを割り圓お、図党䜓の高さを1800に䞞めたした。これたでの説明に加えお、図では、ゟヌン日間の明るい氎平線、週間のわずかに暗い線、および月間の黒い線を反映するこずにしたした。氎平線に加えお、1時間ごずに配眮される垂盎線もありたす-時間の境界のために。そしおもう1぀の重芁な詳现。衚瀺されおいる各カラヌストリップの巊偎の境界線には、その始たりの黒いマヌクが正方圢のオヌプニングブラケットの圢で衚瀺されたす。これは、連続する電話に察応する可胜性のある2぀のレヌンのマヌゞを防ぐために必芁です。



情報の䞻な凊理はシヌト「B」で行われたす図7。そこには、「䜙分な」䞭間の柱がたくさんあり、そのセルの倀は「念頭に眮いお」蚈算するか、最終的な匏ですぐに考慮するこずができたす。これは、各ストリップのコヌナヌの座暙に関係したす。しかし、最初は混乱する可胜性があるので、ずおも面倒に思えたした。





図 7.基本的な蚈算を含むシヌト。



列「A」は、呌び出し日から日ゟヌン番号を取埗したす。列「B」-䞀日の始たりからの秒単䜍の呌び出し時間。これは、シヌト「C」の列「I」ず同じ倀です。列「C」-通話時間を分単䜍で切り䞊げたす。ここでは、そのような「䞍正確さ」が導入された予玄をする䟡倀がありたす。通話時間は20秒の粟床、぀たり、図の最倧1ピクセル受け入れられたスケヌルに基づくで取埗する必芁があるように思われたす。ただし、幅が1〜2ピクセルの非垞に短いストラむプは、チャヌトにうたく衚瀺されないこずは明らかです。したがっお、最小ストラむプ長は少なくずも3ピクセルに察応したす。そしお䞀般的に、ストリップの長さは3の倍数になりたす。通話時間が䞊方に䞞められるため1分の粟床で、実際の状況ず比范しお、図はわずかに「混雑」したす。ただし、このオヌバヌフロヌはごくわずかです。匏「INDIRECT」を䜿甚した列「D」では、シヌト「A」の蚈算されたアドレスのパラメヌタヌシヌト「C」から色の倀が抜出されたす。次に、ストリップコヌナヌの座暙が蚈算されたす。すでに曞いたように、䞍必芁な䞭間蚈算がたくさんありたすが、やり盎したせんでした。列「U」は、珟圚の通話の電話番号が匷調衚瀺甚に指定された4぀の電話番号の1぀ず䞀臎する堎合、匷調衚瀺の存圚ず垯域境界の色を蚈算したすシヌト「C」。遞択した呌び出しで、ラベルが察応するストリップに重ねられるだけでなく、ストリップの境界線の灰色もその䞊に曞くのを忘れたしたこの色はパラメヌタヌを䜿甚しおシヌト䞊で倉曎するこずもできたす。通垞の堎合、ストリップには瞁取りがありたせん。最埌に、次の3列では、SVGグラフィックマヌクアップ蚀語でのテキストの最終的な圢成が行われたす。この蚘事では、この蚀語の説明ず構文に぀いおは考慮したせん。実際、これは難しいこずではありたせん、私は数分でそれを理解したした。 「V」列には、境界線のあるストリップを描画するコヌドが生成されたす。



䟋



<path fill="#FF5050" stroke="#808080" d="M1598,51L1598,59L1601,59L1601,51L1598,51" style="stroke-width: 1px;" stroke-width="1" stroke-dasharray="0"></path>.


列「W」には、ストリップの巊端のコヌドが含たれおいたす。



䟋



<path fill="none" stroke="black" d="M1599,52L1598,52L1598,58L1599,58" style="stroke-width: 1px;" stroke-width="1" stroke-dasharray="0"></path>.


列「X」には、必芁な堎合にのみラベルテキスト番号1、2、3、たたは4を衚瀺するためのコヌドが含たれおいたす。この遞択性は、匏「IFU2 <> "none"; ...; ...」を䜿甚しお実行されたす。



サンプルテキスト「3」



<text x="1601" y="58" style="text-anchor: middle; font-family: times; font-weight: bolder; font-size: 8px;" stroke="none" fill="black"><tspan>3</tspan></text>.


図8は、これら3぀の列のスクリヌンショットを非垞に小さいスケヌルで瀺しおいたす。それ以倖の堎合は、テキストの倧郚分のためにデモンストレヌションするこずがほずんど䞍可胜です。たた、すべおの匕数を䜿甚しお匏「CONNECT」を蚘述するのがいかに面倒であるかを確認できたす。





図 8.基本的な蚈算の結果を含む列。



「碑文」シヌトでは、碑文は図の䞊時間マヌカヌず図の巊偎日付に圢成されたす図9。匏には、サむズ、スタむル、フォントの色、境界線などのフォントパラメヌタが含たれおいたす。蚈算の䞻な焊点は、日付ず時間によるセルの自動入力、均䞀なステップによるテキストの䜍眮の座暙の蚈算です。





図 9.碑文を圢成するシヌト。



「境界線」シヌトには、ゟヌン日付ず時間の境界ずしお機胜する、図のすべおの補助線が圢成されたす。図10は、ゟヌンごずの氎平線の圢成を瀺すスクリヌンショットを瀺しおいたす。最初の2列には、ゟヌン番号れロから開始ずその盞察的な垂盎座暙が含たれおいたす。 3番目の列は、線を匕くSVGコヌドを生成したす。ここで、コヌドの䜜成では、おなじみの匏「CONNECT」だけでなく、2぀の匏「IF」も䜿甚され、䞀方が他方の䞭にネストされおいたす。これは、状況に応じお3぀の異なる色の線画を実装するために必芁です。䞊で述べたように、黒い線は月、灰色-週、および薄い灰色-日を区切りたす。最埌の2色は、セルB17およびC17のシヌト「C」で指定されおいたす。匏「IF」の匕数には、匏「DAY」ず「OSTAT」がありたす。最初の匏は、敎数ずしお指定された日付からの数倀を認識したす。これは、ゟヌン番号の倀を最初の列から事前に遞択された定数42491だけシフトするこずによっお取埗されたす。



特に、日付からの数倀が単䜍ず等しいかどうかのチェックが行われ、それによっお新しい月の始たりが認識されたす。 「OSTAT」匏は、新しい週の始たりを認識するために䜿甚されたす埓来のアルゎリズム。この匏の2番目の匕数は7です。これは、週に7日あるためです。特に、分割の残りの郚分は倀1ず比范されたす。この倀0から6は、図の曜日のシフトを調敎するために䜿甚でき、実際のカレンダヌず䞀臎するように遞択されたす。氎平線が圢成された埌、25本の垂盎線がより簡単な方法で圢成されたす1時間ごずに23本の線ずさらに2本の境界線。





図 10.境界を圢成するシヌト。



シヌト「ささいなこず」図11には、図の特性に関する远加情報の圢成が登録されおいたす。列「B」ず「C」には、各芁玠のオフセット座暙が含たれおいたす。





図 11.シヌト圢成の远加情報。



[占有率]タブでは、時間の経過に䌎う通話密床の分垃のヒストグラムが䜜成されたす図12。これは、さたざたな長さの垂盎線のコレクションであり、互いに近接しおおり、図の真䞋に配眮されおいたす。このような行の数は、時間芁玠の数それぞれ20秒に察応したす。぀たり、24 * 60 * 3 = 4320です。





図 12.通話密床のヒストグラムを圢成するシヌト。



線の長さヒストグラムのバヌの高さは、153日間すべおの「占有された」時間芁玠の合蚈に正確に察応したす。぀たり、電話が圓日の珟圚の時刻芁玠に該圓する堎合、それはヒストグラムで考慮されたす。別の単玔なCプログラムを䜿甚しお、このような数倀配列を蚈算したした。 Excelセルの助けを借りお、操䜜の倚次元性のためにそのような蚈算を行うこずはできたせん。察応するプログラムコヌドをそこに配眮するこずでVBAを䜿甚するこずは可胜でしたが、圓時私はこのツヌルをたったく所有しおいたせんでした。ヒストグラム倀の配列を蚈算するためのプログラムコヌドを以䞋に瀺したす。



#include <stdio.h>
#include <windows.h>

int main(){
	int a,b,n,c,k;
	int q[4320];
	for(n=0;n<4320;n++){
		q[n]=0;
	}
	FILE *f,*f1;
	f=fopen("ab.txt","r");
	f1=fopen("Out.txt","w");
	for(c=0;c<2102;c++){
		fscanf(f,"%i\t%i\n",&a,&b);
		for(k=a;k<b;k++){
			q[k/20]+=1;
		}
	}
	for(n=0;n<4320;n++){
		fprintf(f1,"%i\n",q[n]);
	}
	fclose(f);
	fclose(f1);
	system("PAUSE");
	return 0;
}


プログラムの入力デヌタは、テキストファむル「ab.txt」です。各呌び出しの開始ず終了の秒の倀のシヌト「A」からの2぀の列がこのファむルにコピヌされおいたすこれに぀いおはすでに䞊蚘で説明したした。図5を参照しおください。蚈算された配列倀は、「Out.txt」出力ファむルに出力されたす。蚈算アルゎリズムは単玔なので、説明する必芁はありたせん。出力ファむルのデヌタは、「雇甚」ワヌクシヌトの「D」列にコピヌされたす。最初の3列は、時間間隔の芁玠ずその数の凡䟋です。列「E」-ヒストグラムの同じ倀ですが、5倍にスケヌリングされ、最も近い敎数に䞞められたす。これは、ヒストグラムの䟿利な配眮、明瞭さ、およびかさばりの排陀のために行われたす。さらに、各倀は1぀オフセットされたす。これは、氎平軞の疑䌌描画に必芁です。ヒストグラムの倀がれロ倜間に䞀般的であっおも、ヒストグラムの1ピクセルは匕き続き衚瀺されたす。したがっお、暪軞が描画されたす。



最埌に、結果シヌトは、ドキュメントの各シヌトに察しお生成されたすべおのSVGコヌドを特定の順序で結合したす最初にラベルず境界線。私は通垞の手動の列コピヌを䜿甚しおこの結合を䜜成したした図13。必芁に応じお、すべおのシヌトの結果の列を調べお、SVGファむルを自動的に゚クスポヌトする関数をVBAに曞き蟌むこずができたす。最初の行にはファむルヘッダヌが含たれおいたす。たず第䞀に、画像の幅ず高さが含たれおいたす。手䜜業で远加された最埌の行は、ドキュメント、぀たりメむンのsvgブロックを閉じたす。党郚で玄6800行ありたした。





図 13.結果を統合したワヌクシヌト。



次に、このシヌトの内容党䜓をテキスト゚ディタ私はAkelPadプログラムを䜿甚したしたにコピヌし、ドキュメントをUTF-8゚ンコヌディングのsvg拡匵子を持぀ファむルに保存する必芁がありたす。その埌、゚ラヌがなければ、ファむルをむンタヌネットブラりザで開いお衚瀺したす。以䞋の図は、結果の画像のさたざたな領域をさたざたな瞮尺で衚瀺したものです。





図14.Chromeで結果の図の党䜓図。





図15.図の巊䞊隅さたざたな境界のタむプずゟヌンの名前。





図16.ラベル付きのチャヌトバヌ。





図17.チャヌトのバヌずその䞋のバヌグラフ。





図18.図の远加情報。





図19.チャヌトバヌずその䞊の時間マヌカヌ。



All Articles