44 < meta charset ="UTF-8 ">
55 < meta http-equiv ="X-UA-Compatible " content ="ie=edge ">
66 < title > WordStream</ title >
7- < script src ="lib/d3.min.js "> </ script >
8- < script src ="lib/d3.layout.wordstream.js "> </ script >
7+ < script src ="./ lib/d3.min.js "> </ script >
8+ < script src ="./ lib/d3.layout.wordstream.js "> </ script >
99</ head >
1010< body >
1111 < script >
12- var url = "data/emptywheel.csv" ;
12+ var url = "./ data/emptywheel.csv" ;
1313 var topics = [ ] ;
1414 d3 . csv ( url , function ( error , rawData ) {
1515 if ( error ) throw error ;
4545 obj [ word ] ++ ;
4646 return obj ;
4747 } , { } ) ;
48- debugger ;
4948 //Convert to array of objects
5049 words [ topic ] = d3 . keys ( counts ) . map ( function ( d ) {
5150 return {
5655 } ) . sort ( function ( a , b ) { //sort the terms by frequency
5756 return b . frequency - a . frequency ;
5857 } ) . filter ( function ( d ) { return d . text ; } ) //filter out empty words
59- . slice ( 0 , 15 ) ;
58+ . slice ( 0 , 20 ) ;
6059 } ) ;
6160 return {
6261 date : date ,
7473 . size ( [ width , height ] )
7574 . data ( data ) ;
7675 var boxes = ws . boxes ( ) ;
77- //Make the color scheme
78- var terms = [ ] ;
79- for ( i = 0 ; i < boxes . length ; i ++ ) {
80- terms . concat ( boxes [ i ] . words ) ;
81- }
82- var c20 = d3 . scale . category20 ( ) ;
83- var uniqueTerms = d3 . set ( terms ) . values ( ) ;
84- var termColorMap = d3 . scale . ordinal ( )
85- . domain ( uniqueTerms )
86- . range ( c20 . range ( ) ) ;
8776
88- var svg = d3 . select ( 'body' ) . append ( 'svg' ) . attr ( {
77+ //Displaying the streams
78+ var area = d3 . svg . area ( )
79+ . interpolate ( 'cardinal' )
80+ . x ( function ( d ) { return ( d . x ) ; } )
81+ . y0 ( function ( d ) { return d . y0 ; } )
82+ . y1 ( function ( d ) { return ( d . y0 + d . y ) ; } ) ;
83+
84+ var color = d3 . scale . category10 ( ) ;
85+ var svg = d3 . select ( "body" ) . append ( 'svg' ) . attr ( {
8986 width : width ,
9087 height : height
9188 } ) ;
92- //Try time stamp for the 12 boxes
93- var colors = [ 'black' , 'red' , 'green' , 'aqua' , 'aquamarine' , 'yellow' , 'steelblue' , 'bisque' , 'gray' , 'blue' , 'blueviolet' , 'brown' ] ;
94- var timeColorMap = d3 . scale . ordinal ( ) . domain ( d3 . range ( 0 , 12 ) ) . range ( colors ) ;
9589
96- var topicColorMap = d3 . scale . ordinal ( ) . domain ( topics ) . range ( c20 . range ( ) ) ;
97-
98-
99- var streamGroups = svg . selectAll ( 'g' ) . data ( boxes ) . enter ( ) . append ( 'g' ) . style ( {
100- fill : function ( d , i ) { return timeColorMap ( i ) ; }
90+ svg . selectAll ( 'path' )
91+ . data ( boxes . layers )
92+ . enter ( )
93+ . append ( 'path' )
94+ . attr ( 'd' , area )
95+ . style ( 'fill' , function ( ) {
96+ return color ( Math . random ( ) ) ;
97+ } )
98+ . attr ( {
99+ 'opacity' : 0.2 ,
100+ stroke : 'steelblue'
101+ } ) ;
102+ //For each box
103+ var allWords = [ ] ;
104+ d3 . map ( boxes . data , function ( row ) {
105+ boxes . topics . forEach ( topic => {
106+ allWords = allWords . concat ( row . words [ topic ] ) ;
107+ } ) ;
101108 } ) ;
109+ allWords = allWords . filter ( d => d . placed == true ) ;
110+
102111 //Display text
103- streamGroups . selectAll ( 'g' ) . data ( function ( d ) { return d . words . filter ( a => a . placed ) ; } ) . enter ( ) . append ( 'g' )
112+ var topics = boxes . topics ;
113+ var c20 = d3 . scale . category20b ( ) ;
114+ //Color based on the topic
115+ var topicColorMap = d3 . scale . ordinal ( ) . domain ( topics ) . range ( c20 . range ( ) ) ;
116+ //Color based on term
117+ var terms = [ ] ;
118+ for ( i = 0 ; i < allWords . length ; i ++ ) {
119+ terms . concat ( allWords [ i ] . text ) ;
120+ }
121+ var uniqueTerms = d3 . set ( terms ) . values ( ) ;
122+ var termColorMap = d3 . scale . ordinal ( )
123+ . domain ( uniqueTerms )
124+ . range ( c20 . range ( ) ) ;
125+
126+ svg . selectAll ( 'g' ) . data ( allWords ) . enter ( ) . append ( 'g' )
104127 . attr ( {
105128 transform : function ( d ) { return 'translate(' + d . x + ', ' + d . y + ')rotate(' + d . rotate + ')' ; }
106129 } ) . append ( 'text' )
107130 . text ( function ( d ) { return d . text ; } )
108131 . attr ( {
109132 'font-family' : 'Impact' ,
110133 'font-size' : function ( d ) { return d . fontSize ; } ,
111- fill : function ( d ) { return topicColorMap ( d . topic ) ; } ,
134+ //fill: function(d){return topicColorMap(d.topic);},
135+ //fill: function(d, i){return color(i);},
136+ fill : function ( d , i ) { return termColorMap ( d . text ) ; } ,
112137 'text-anchor' : 'middle' ,
113138 'alignment-baseline' : 'middle'
114139 } ) ;
115- //#region Display stream
116- var graphGroup = svg . append ( 'g' ) ;
117- var streamPath1 = ws . streamPath1 ( ) ;
118- var streamPath2 = ws . streamPath2 ( ) ;
119- var area1 = d3 . svg . area ( )
120- . interpolate ( 'cardinal' )
121- . x ( function ( d ) { return d [ 0 ] ; } )
122- . y0 ( 0 )
123- . y1 ( function ( d ) { return d [ 1 ] ; } ) ;
124- var area2 = d3 . svg . area ( )
125- . interpolate ( 'cardinal' )
126- . x ( function ( d ) { return d [ 0 ] ; } )
127- . y0 ( function ( d ) { return d [ 1 ] ; } )
128- . y1 ( height ) ;
129- graphGroup . append ( 'path' ) . datum ( streamPath1 )
130- . attr ( {
131- d : area1 ,
132- stroke : 'red' ,
133- 'stroke-width' : 2 ,
134- fill :'red'
135- } ) ;
136- graphGroup . append ( 'path' ) . datum ( streamPath2 )
137- . attr ( {
138- d : area2 ,
139- stroke : 'red' ,
140- 'stroke-width' : 2 ,
141- fill :'red'
142- } ) ;
143- //#endregion display stream
144140 } ;
145-
146141 </ script >
147142</ body >
148143</ html >
0 commit comments