Spaces:
Runtime error
Runtime error
import os | |
import uuid | |
import plotly.graph_objects as go | |
from langchain.tools import Tool | |
os.makedirs('image', exist_ok=True) | |
def plot_bar(inputs) -> str: | |
inputs = eval(inputs) | |
image_filename = os.path.join('image', f"{str(uuid.uuid4())[:8]}.png") | |
fig = go.Figure(data=[go.Bar(x=list(range(len(inputs))), y=inputs)]) | |
fig.write_image(image_filename) | |
print(f"\nProcessed PlotBarChart, Input arr: {inputs}, Output Text: {image_filename}") | |
return image_filename | |
def plot_line(inputs) -> str: | |
inputs = eval(inputs) | |
image_filename = os.path.join('image', f"{str(uuid.uuid4())[:8]}.png") | |
fig = go.Figure(data=[go.Line(x=list(range(len(inputs))), y=inputs)]) | |
fig.write_image(image_filename) | |
print(f"\nProcessed PlotBarChart, Input arr: {inputs}, Output Text: {image_filename}") | |
return image_filename | |
def plot_pie(inputs: tuple) -> str: | |
inputs = eval(inputs) | |
labels = inputs[0] | |
values = inputs[1] | |
# 创建饼图对象 | |
fig = go.Figure(data=go.Pie(labels=labels, values=values)) | |
# 设置图表布局 | |
fig.update_layout(title='Pie Chart') | |
image_filename = os.path.join('image', f"{str(uuid.uuid4())[:8]}.png") | |
fig.write_image(image_filename) | |
print(f"\nProcessed PlotPieChart, Input labels :{labels}, Input arr: {values}, Output Text: {image_filename}") | |
return image_filename | |
def plot_scatter(inputs: tuple) -> str: | |
inputs = eval(inputs) | |
# 创建散点图数据 | |
x = inputs[0] | |
y = inputs[1] | |
# 创建散点图对象 | |
fig = go.Figure(data=go.Scatter( | |
x=x, y=y, mode='markers', marker=dict(size=10, color='blue') | |
)) | |
# 设置图表布局 | |
fig.update_layout(title='Scatter Plot', xaxis_title='X-axis', yaxis_title='Y-axis') | |
image_filename = os.path.join('image', f"{str(uuid.uuid4())[:8]}.png") | |
fig.write_image(image_filename) | |
print(f"\nProcessed PlotScatterChart, Input x :{x}, Input y: {y}, Output Text: {image_filename}") | |
return image_filename | |
bar_tool = Tool(name="PlotBarChart", func=plot_bar, | |
description="useful when you want to draw bar chart. receives array as input. " | |
"The input to this tool should be a number list, representing the array. ", | |
return_direct=True) | |
line_tool = Tool(name="PlotLineChart", func=plot_line, | |
description="useful when you want to draw line chart. receives array as input. " | |
"The input to this tool should be a number list, representing the array. ", | |
return_direct=True) | |
pie_tool = Tool(name="PlotPieChart", func=plot_pie, | |
description="useful when you want to draw pie chart. the input is a tuple, which schema is such as(lables,values)." | |
"'labels', the first element of the input tuple, is a list of string, containing the names of each sector in the pie chart. " | |
"'values', the second element of the input tuple, is a list of number, containing values corresponding to each sector ", | |
return_direct=True) | |
scatter_tool = Tool(name="PlotScatterChart", func=plot_scatter, | |
description="useful when you want to draw scatter chart. the input is a tuple, which schema is such as(x,y)." | |
"'x', the first element of the input tuple, is a list containing the abscissa values of each point in the scatterplot." | |
"'y', the second element of the input tuple, 'is a list containing the ordinate values of each point in the scatterplot.", | |
return_direct=True) | |