Fix matplotlib high DPI configuration in code execution environment
Browse files- Added explicit matplotlib DPI settings in run_safe_exec function
- Ensured 600 DPI configuration persists in dynamic code execution
- Fixed Streamlit image display to use full resolution without width limits
- Plots should now generate and display at true high resolution
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>
app.py
CHANGED
@@ -498,8 +498,8 @@ def show_custom_response(response):
|
|
498 |
try:
|
499 |
if isinstance(content, str) and (content.endswith('.png') or content.endswith('.jpg')):
|
500 |
if os.path.exists(content):
|
501 |
-
# Display image without
|
502 |
-
st.image(content,
|
503 |
return {"is_image": True}
|
504 |
# Also handle case where content shows filename but we want to show image
|
505 |
elif isinstance(content, str) and any(ext in content for ext in ['.png', '.jpg']):
|
@@ -509,7 +509,7 @@ def show_custom_response(response):
|
|
509 |
if filename_match:
|
510 |
filename = filename_match.group(1)
|
511 |
if os.path.exists(filename):
|
512 |
-
st.image(filename,
|
513 |
return {"is_image": True}
|
514 |
except:
|
515 |
pass
|
|
|
498 |
try:
|
499 |
if isinstance(content, str) and (content.endswith('.png') or content.endswith('.jpg')):
|
500 |
if os.path.exists(content):
|
501 |
+
# Display image at full resolution without width restriction
|
502 |
+
st.image(content, use_column_width=True)
|
503 |
return {"is_image": True}
|
504 |
# Also handle case where content shows filename but we want to show image
|
505 |
elif isinstance(content, str) and any(ext in content for ext in ['.png', '.jpg']):
|
|
|
509 |
if filename_match:
|
510 |
filename = filename_match.group(1)
|
511 |
if os.path.exists(filename):
|
512 |
+
st.image(filename, use_column_width=True)
|
513 |
return {"is_image": True}
|
514 |
except:
|
515 |
pass
|
src.py
CHANGED
@@ -144,6 +144,19 @@ def ask_question(model_name, question):
|
|
144 |
def run_safe_exec(full_code, df=None, extra_globals=None):
|
145 |
"""Safely execute generated code and handle errors"""
|
146 |
local_vars = {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
global_vars = {
|
148 |
'pd': pd, 'plt': plt, 'os': os,
|
149 |
'sns': __import__('seaborn'),
|
|
|
144 |
def run_safe_exec(full_code, df=None, extra_globals=None):
|
145 |
"""Safely execute generated code and handle errors"""
|
146 |
local_vars = {}
|
147 |
+
|
148 |
+
# Force matplotlib to use high DPI settings in exec environment
|
149 |
+
plt.style.use('vayuchat.mplstyle')
|
150 |
+
plt.rcParams['figure.dpi'] = 600
|
151 |
+
plt.rcParams['savefig.dpi'] = 600
|
152 |
+
plt.rcParams['figure.figsize'] = [14, 8]
|
153 |
+
plt.rcParams['font.size'] = 14
|
154 |
+
plt.rcParams['axes.titlesize'] = 16
|
155 |
+
plt.rcParams['axes.labelsize'] = 14
|
156 |
+
plt.rcParams['xtick.labelsize'] = 12
|
157 |
+
plt.rcParams['ytick.labelsize'] = 12
|
158 |
+
plt.rcParams['legend.fontsize'] = 12
|
159 |
+
|
160 |
global_vars = {
|
161 |
'pd': pd, 'plt': plt, 'os': os,
|
162 |
'sns': __import__('seaborn'),
|