@@ -29,7 +29,7 @@ define([
29
29
super . _init ( ) ;
30
30
31
31
this . config . dataview = false ;
32
- this . config . size = { width : 900 , height : 550 } ;
32
+ this . config . size = { width : 1064 , height : 550 } ;
33
33
34
34
this . state = {
35
35
chartType : 'scatterplot' ,
@@ -39,7 +39,7 @@ define([
39
39
figColumn : 0 ,
40
40
shareX : false ,
41
41
shareY : false ,
42
- useData : true , // FIXME: use data default?
42
+ setXY : false ,
43
43
data : '' ,
44
44
x : '' ,
45
45
y : '' ,
@@ -115,17 +115,17 @@ define([
115
115
} ) ;
116
116
117
117
// use data or not
118
- $ ( this . wrapSelector ( '#useData ' ) ) . on ( 'change' , function ( ) {
119
- let useData = $ ( this ) . prop ( 'checked' ) ;
120
- if ( useData ) {
121
- // use data
118
+ $ ( this . wrapSelector ( '#setXY ' ) ) . on ( 'change' , function ( ) {
119
+ let setXY = $ ( this ) . prop ( 'checked' ) ;
120
+ if ( setXY == false ) {
121
+ // set Data
122
122
$ ( that . wrapSelector ( '#data' ) ) . prop ( 'disabled' , false ) ;
123
123
124
124
$ ( that . wrapSelector ( '#x' ) ) . closest ( '.vp-vs-box' ) . replaceWith ( '<select id="x"></select>' ) ;
125
125
$ ( that . wrapSelector ( '#y' ) ) . closest ( '.vp-vs-box' ) . replaceWith ( '<select id="y"></select>' ) ;
126
126
$ ( that . wrapSelector ( '#hue' ) ) . closest ( '.vp-vs-box' ) . replaceWith ( '<select id="hue"></select>' ) ;
127
127
} else {
128
- // not use data
128
+ // set X Y indivisually
129
129
// disable data selection
130
130
$ ( that . wrapSelector ( '#data' ) ) . prop ( 'disabled' , true ) ;
131
131
$ ( that . wrapSelector ( '#data' ) ) . val ( '' ) ;
@@ -154,11 +154,6 @@ define([
154
154
}
155
155
} ) ;
156
156
157
- // bind column by dataframe
158
- // $(this.wrapSelector('#data')).on('change', function() {
159
- // com_generator.vp_bindColumnSource(that.wrapSelector(), this, ['x', 'y', 'hue'], 'select');
160
- // });
161
-
162
157
// preview refresh
163
158
$ ( this . wrapSelector ( '#previewRefresh' ) ) . on ( 'click' , function ( ) {
164
159
that . loadPreview ( ) ;
@@ -216,6 +211,7 @@ define([
216
211
$ ( that . wrapSelector ( '#y' ) ) . prop ( 'disabled' , false ) ;
217
212
$ ( that . wrapSelector ( '#hue' ) ) . prop ( 'disabled' , false ) ;
218
213
214
+ // bind column source using selected dataframe
219
215
com_generator . vp_bindColumnSource ( that . wrapSelector ( ) , $ ( that . wrapSelector ( '#data' ) ) , [ 'x' , 'y' , 'hue' ] , 'select' ) ;
220
216
} else {
221
217
$ ( that . wrapSelector ( '#x' ) ) . prop ( 'disabled' , true ) ;
@@ -295,10 +291,10 @@ define([
295
291
// set size
296
292
$ ( this . wrapSelector ( '.vp-inner-popup-box' ) ) . css ( { width : 400 , height : 260 } ) ;
297
293
298
- this . bindImportOptions ( ) ;
294
+ this . bindSettingBox ( ) ;
299
295
}
300
296
301
- bindImportOptions ( ) {
297
+ bindSettingBox ( ) {
302
298
//====================================================================
303
299
// Stylesheet suggestinput
304
300
//====================================================================
@@ -317,6 +313,7 @@ define([
317
313
suggestInput . setComponentID ( 'styleSheet' ) ;
318
314
suggestInput . setSuggestList ( function ( ) { return varList ; } ) ;
319
315
suggestInput . setPlaceholder ( 'style name' ) ;
316
+ suggestInput . setValue ( 'seaborn-darkgrid' ) ; // set default (seaborn-darkgrid)
320
317
// suggestInput.setNormalFilter(false);
321
318
$ ( stylesheetTag ) . replaceWith ( function ( ) {
322
319
return suggestInput . toTagString ( ) ;
@@ -449,62 +446,74 @@ define([
449
446
x_limit_from, x_limit_to, y_limit_from, y_limit_to,
450
447
useSampling, sampleCount
451
448
} = this . state ;
449
+
450
+ let indent = '' ;
452
451
let code = new com_String ( ) ;
453
452
let config = this . chartConfig [ chartType ] ;
454
453
let state = JSON . parse ( JSON . stringify ( this . state ) ) ;
455
454
456
- let chartCode = com_generator . vp_codeGenerator ( this , config , state , ( userOption != '' ? ', ' + userOption : '' ) ) ;
457
-
458
- let convertedData = data ;
459
- if ( preview && data != '' ) {
460
- // set font for KR
461
- code . appendLine ( "plt.rc('font', family='Gulim')" ) ; // FIXME: is it ok for non-Korean?
462
- // set figure size for preview chart
463
- let defaultWidth = 5 ;
464
- let defaultHeight = 4 ;
465
- let previewSize = parseInt ( $ ( this . wrapSelector ( '#previewSize' ) ) . val ( ) ) ;
466
- code . appendFormatLine ( 'plt.figure(figsize=({0}, {1}))' , defaultWidth + previewSize , defaultHeight + previewSize ) ;
467
- if ( useSampling ) {
468
- // data sampling code for preview
469
- convertedData = data + '.sample(n=' + sampleCount + ', random_state=0)' ;
470
- }
471
- }
472
-
473
- // replace pre-defined options
474
- chartCode = chartCode . replace ( data , convertedData ) ;
455
+ let chartCode = new com_String ( ) ;
475
456
476
- code . appendLine ( chartCode ) ;
457
+ let generatedCode = com_generator . vp_codeGenerator ( this , config , state , ( userOption != '' ? ', ' + userOption : '' ) ) ;
477
458
478
459
// Info
479
460
if ( title && title != '' ) {
480
- code . appendFormatLine ( "plt.title('{0}')" , title ) ;
461
+ chartCode . appendFormatLine ( "plt.title('{0}')" , title ) ;
481
462
}
482
463
if ( x_label && x_label != '' ) {
483
- code . appendFormatLine ( "plt.xlabel('{0}')" , x_label ) ;
464
+ chartCode . appendFormatLine ( "plt.xlabel('{0}')" , x_label ) ;
484
465
}
485
466
if ( y_label && y_label != '' ) {
486
- code . appendFormatLine ( "plt.ylabel('{0}')" , y_label ) ;
467
+ chartCode . appendFormatLine ( "plt.ylabel('{0}')" , y_label ) ;
487
468
}
488
469
if ( x_limit_from != '' && x_limit_to != '' ) {
489
- code . appendFormatLine ( "plt.xlim(({0}, {1}))" , x_limit_from , x_limit_to ) ;
470
+ chartCode . appendFormatLine ( "plt.xlim(({0}, {1}))" , x_limit_from , x_limit_to ) ;
490
471
}
491
472
if ( y_limit_from != '' && y_limit_to != '' ) {
492
- code . appendFormatLine ( "plt.ylim(({0}, {1}))" , y_limit_from , y_limit_to ) ;
473
+ chartCode . appendFormatLine ( "plt.ylim(({0}, {1}))" , y_limit_from , y_limit_to ) ;
493
474
}
494
475
if ( useLegend == 'True' && legendPos != '' ) {
495
- code . appendFormatLine ( "plt.legend(loc='{0}')" , legendPos ) ;
476
+ chartCode . appendFormatLine ( "plt.legend(loc='{0}')" , legendPos ) ;
496
477
}
497
478
if ( useGrid == 'True' ) {
498
- code . appendLine ( "plt.grid(True)" ) ;
479
+ chartCode . appendLine ( "plt.grid(True)" ) ;
499
480
// TODO: grid types
500
481
// plt.grid(True, axis='x', color='red', alpha=0.5, linestyle='--')
501
482
}
502
483
if ( useMarker == 'True' ) {
503
484
// TODO: marker to seaborn argument (ex. marker='+' / markers={'Lunch':'s', 'Dinner':'X'})
504
485
}
486
+ chartCode . append ( 'plt.show()' ) ;
505
487
488
+ let convertedData = data ;
489
+ if ( preview ) {
490
+ // set indent
491
+ indent = ' ' . repeat ( 4 ) ;
492
+
493
+ // Ignore warning
494
+ code . appendLine ( 'import warnings' ) ;
495
+ code . appendLine ( 'with warnings.catch_warnings():' ) ;
496
+ code . appendFormatLine ( "{0}warnings.simplefilter('ignore')" , indent ) ;
497
+
498
+ // set figure size for preview chart
499
+ let defaultWidth = 5 ;
500
+ let defaultHeight = 4 ;
501
+ let previewSize = parseInt ( $ ( this . wrapSelector ( '#previewSize' ) ) . val ( ) ) ;
502
+ code . appendFormatLine ( '{0}plt.figure(figsize=({1}, {2}))' , indent , defaultWidth + previewSize , defaultHeight + previewSize ) ;
503
+ if ( useSampling ) {
504
+ // data sampling code for preview
505
+ convertedData = data + '.sample(n=' + sampleCount + ', random_state=0)' ;
506
+ // replace pre-defined options
507
+ generatedCode = generatedCode . replace ( data , convertedData ) ;
508
+ }
506
509
507
- code . append ( 'plt.show()' ) ;
510
+ code . appendFormatLine ( "{0}{1}" , indent , generatedCode ) ;
511
+ code . appendFormatLine ( "{0}{1}" , indent , chartCode . toString ( ) . replaceAll ( '\n' , '\n' + indent ) ) ;
512
+
513
+ } else {
514
+ code . appendLine ( generatedCode ) ;
515
+ code . appendLine ( chartCode . toString ( ) ) ;
516
+ }
508
517
509
518
return code . toString ( ) ;
510
519
}
0 commit comments