DrishtiSharma commited on
Commit
7832c6d
·
verified ·
1 Parent(s): 67b2e9b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -133
app.py CHANGED
@@ -87,32 +87,6 @@ if st.session_state.df is not None and st.session_state.show_preview:
87
  st.dataframe(st.session_state.df.head())
88
 
89
 
90
- #def ask_gpt4o_for_visualization(query, df, llm):
91
- # columns = ', '.join(df.columns)
92
- # prompt = f"""
93
- # Analyze the query and suggest one or more relevant visualizations.
94
- # Query: "{query}"
95
- # Available Columns: {columns}
96
- # Respond in this JSON format (as a list if multiple suggestions):
97
- # [
98
- # {{
99
- # "chart_type": "bar/box/line/scatter",
100
- # "x_axis": "column_name",
101
- # "y_axis": "column_name",
102
- # "group_by": "optional_column_name"
103
- # }}
104
- # ]
105
- # """
106
- # response = llm.generate(prompt)
107
- # try:
108
- # return json.loads(response)
109
- # except json.JSONDecodeError:
110
- # st.error("⚠️ GPT-4o failed to generate a valid suggestion.")
111
- # return None
112
-
113
-
114
-
115
-
116
  # Helper Function for Validation
117
  def is_valid_suggestion(suggestion):
118
  chart_type = suggestion.get("chart_type", "").lower()
@@ -455,91 +429,6 @@ def handle_visualization_suggestions(suggestions, df):
455
  st.plotly_chart(fig, use_container_width=True)
456
 
457
 
458
-
459
- # Function to create TXT file
460
- def create_text_report_with_viz_temp(report, conclusion, visualizations):
461
- content = f"### Analysis Report\n\n{report}\n\n### Visualizations\n"
462
-
463
- for i, fig in enumerate(visualizations, start=1):
464
- fig_title = fig.layout.title.text if fig.layout.title.text else f"Visualization {i}"
465
- x_axis = fig.layout.xaxis.title.text if fig.layout.xaxis.title.text else "X-axis"
466
- y_axis = fig.layout.yaxis.title.text if fig.layout.yaxis.title.text else "Y-axis"
467
-
468
- content += f"\n{i}. {fig_title}\n"
469
- content += f" - X-axis: {x_axis}\n"
470
- content += f" - Y-axis: {y_axis}\n"
471
-
472
- if fig.data:
473
- trace_types = set(trace.type for trace in fig.data)
474
- content += f" - Chart Type(s): {', '.join(trace_types)}\n"
475
- else:
476
- content += " - No data available in this visualization.\n"
477
-
478
- content += f"\n\n\n{conclusion}"
479
-
480
- with tempfile.NamedTemporaryFile(delete=False, suffix=".txt", mode='w', encoding='utf-8') as temp_txt:
481
- temp_txt.write(content)
482
- return temp_txt.name
483
-
484
-
485
-
486
- # Function to create PDF with report text and visualizations
487
- def create_pdf_report_with_viz(report, conclusion, visualizations):
488
- pdf = FPDF()
489
- pdf.set_auto_page_break(auto=True, margin=15)
490
- pdf.add_page()
491
- pdf.set_font("Arial", size=12)
492
-
493
- # Title
494
- pdf.set_font("Arial", style="B", size=18)
495
- pdf.cell(0, 10, "📊 Analysis Report", ln=True, align="C")
496
- pdf.ln(10)
497
-
498
- # Report Content
499
- pdf.set_font("Arial", style="B", size=14)
500
- pdf.cell(0, 10, "Analysis", ln=True)
501
- pdf.set_font("Arial", size=12)
502
- pdf.multi_cell(0, 10, report)
503
-
504
- pdf.ln(10)
505
- pdf.set_font("Arial", style="B", size=14)
506
- pdf.cell(0, 10, "Conclusion", ln=True)
507
- pdf.set_font("Arial", size=12)
508
- pdf.multi_cell(0, 10, conclusion)
509
-
510
- # Add Visualizations
511
- pdf.add_page()
512
- pdf.set_font("Arial", style="B", size=16)
513
- pdf.cell(0, 10, "📈 Visualizations", ln=True)
514
- pdf.ln(5)
515
-
516
- with tempfile.TemporaryDirectory() as temp_dir:
517
- for i, fig in enumerate(visualizations, start=1):
518
- fig_title = fig.layout.title.text if fig.layout.title.text else f"Visualization {i}"
519
- x_axis = fig.layout.xaxis.title.text if fig.layout.xaxis.title.text else "X-axis"
520
- y_axis = fig.layout.yaxis.title.text if fig.layout.yaxis.title.text else "Y-axis"
521
-
522
- # Save each visualization as a PNG image
523
- img_path = os.path.join(temp_dir, f"viz_{i}.png")
524
- fig.write_image(img_path)
525
-
526
- # Insert Title and Description
527
- pdf.set_font("Arial", style="B", size=14)
528
- pdf.multi_cell(0, 10, f"{i}. {fig_title}")
529
- pdf.set_font("Arial", size=12)
530
- pdf.multi_cell(0, 10, f"X-axis: {x_axis} | Y-axis: {y_axis}")
531
- pdf.ln(3)
532
-
533
- # Embed Visualization
534
- pdf.image(img_path, w=170)
535
- pdf.ln(10)
536
-
537
- # Save PDF
538
- temp_pdf = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf")
539
- pdf.output(temp_pdf.name)
540
-
541
- return temp_pdf
542
-
543
  def escape_markdown(text):
544
  # Ensure text is a string
545
  text = str(text)
@@ -684,28 +573,6 @@ if st.session_state.df is not None:
684
  safe_conclusion = escape_markdown(conclusion_result if conclusion_result else "⚠️ No Conclusion Generated.")
685
  st.markdown(safe_conclusion)
686
 
687
- # Full Data Visualization Tab
688
- with tab2:
689
- st.subheader("📊 Comprehensive Data Visualizations")
690
-
691
- fig1 = px.histogram(st.session_state.df, x="job_title", title="Job Title Frequency")
692
- st.plotly_chart(fig1)
693
-
694
- fig2 = px.bar(
695
- st.session_state.df.groupby("experience_level")["salary_in_usd"].mean().reset_index(),
696
- x="experience_level", y="salary_in_usd",
697
- title="Average Salary by Experience Level"
698
- )
699
- st.plotly_chart(fig2)
700
-
701
- fig3 = px.box(st.session_state.df, x="employment_type", y="salary_in_usd",
702
- title="Salary Distribution by Employment Type")
703
- st.plotly_chart(fig3)
704
-
705
- temp_dir.cleanup()
706
- else:
707
- st.info("Please load a dataset to proceed.")
708
-
709
 
710
  # Sidebar Reference
711
  with st.sidebar:
 
87
  st.dataframe(st.session_state.df.head())
88
 
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  # Helper Function for Validation
91
  def is_valid_suggestion(suggestion):
92
  chart_type = suggestion.get("chart_type", "").lower()
 
429
  st.plotly_chart(fig, use_container_width=True)
430
 
431
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
  def escape_markdown(text):
433
  # Ensure text is a string
434
  text = str(text)
 
573
  safe_conclusion = escape_markdown(conclusion_result if conclusion_result else "⚠️ No Conclusion Generated.")
574
  st.markdown(safe_conclusion)
575
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
576
 
577
  # Sidebar Reference
578
  with st.sidebar: