Okay, my bad, the code snippet I sent is correctly uploading it to 'Plots' but in the actual script I use this:
` def plot_graphs(input_df,output_df,task):
# Plotting all the graphs
for metric in df_cols:
    # Assigning X and Y axes data
    in_x = input_df["frameNum"]
    in_y = input_df[metric]
    out_x = output_df["frameNum"]
    out_y = output_df[metric]
    # Creating a new figure
    plt.figure()
    plt.xlabel('Frame Number')
    plt.ylabel('{} Score'.format(metric))
    # Plotting a simple line graph
    plt.plot(in_x,in_y)
    plt.plot(out_x,out_y)
    # Adding legend
    plt.legend(["Input {}".format(metric),"Output {}".format(metric)])
    # Reporting the plot through Trains Logger API
    task.get_logger().report_matplotlib_figure('Input vs Output {}'.format(metric),'Test',iteration=3,figure=plt,report_image=False)
    # task.logger.flush()
    time.sleep(3.0) `This is the code I'm using, not much different from the snippet. I've used plt.figure() to create a new plot since it's in the for loop, could that be causing this?
		No, the sample code I sent above works as intended, uploads to 'Plots'. But the main code that I've written, which is almost exactly similar to the sample code behaves differently.
SmarmyDolphin68 , All looks okay to me...
Could you verify you still get the plot on debug samples as image with the latest trains RCpip install trains==0.16.4rc0
BTW: I tested the code you previously attached, and it showed the plot in the "Plots" section
(Tested with latest trains from GitHub)
Indeed,  sleep()  did the trick but it's going into the Debug Samples tab and not the Plots, any reason why? Earlier (with  Task.init()  followed by  Task.get_task() ) the same plt plots got reported to 'Plots'.
I tried it, and it is uploading it to Debug Samples ( Task.get_task() ) with  task.get_logger().report_matplotlib_figure()  , but with a  Task.init()  , it's uploading it to Plots.
Checking with the RC package now
` from trains import Task
import matplotlib.pyplot as plt
import numpy as np
import time
task = Task.get_task(task_id='task_id')
for i in range(0,10):
x_1 = np.random.rand(50)
y_1 = np.random.rand(50)
x_2 = np.random.rand(50)
y_2 = np.random.rand(50)
plt.figure()
plt.scatter(x_1, y_1, alpha=0.5)
plt.scatter(x_2, y_2, alpha=0.5)
# Plot will be reported automatically
# plt.show()
task.get_logger().report_matplotlib_figure(title="My Plot Title", series="My Plot Series", iteration=i, figure=plt)
time.sleep(6.0) `Weird that this code is also uploading to the 'Plots'. I replicated the same thing as my main script, but main script is still uploading to Debug Samples.
Python - 3.8.5
Matplotlib - 3.3.3
(Using same env to run test script and main script)
SmarmyDolphin68 if you can reproduce the behavior in a standalone script , it will really accelerate fixing this issue
What's the matplotlib version ? and python version?
Oh! With the  sleep()  function? Let me try it again
AgitatedDove14 , thanks a lot! I'll get back with a script in a day or two.
SmarmyDolphin68
BTW: there is no automatic reporting when you have  task = Task.get_task(task_id='your_task_id')
It's only active when you have one "main" task.
You can also check the  continue_last_task  argument in Task.init , it might be a good fit for your scenario
https://allegro.ai/docs/task.html#trains.task.Task.init
Weird that this code is also uploading to the 'Plots'. I replicated the same thing as my main script, but main script is still uploading to Debug Samples.
SmarmyDolphin68 are you saying the same code behaves differently ?
SmarmyDolphin68
Debug Samples tab and not the Plots,
Are you doing  plt.imshow  ?
Also make sure you have  report_image=False  when calling the report_matplotlib_figure
(if it is true it will upload it as an image to "debug samples")
Could you amend the original snippet (or verify that it also produces plots in debug samples) ?
(Basically I need something that I can run  🙂  )
Understood, I'll look into it!
My use case is that, let's say I'm training with a file called  train.py  in which I have  Task.init()  , now after the training is finished, I generate some more graphs with a file called  graphs.py   and want to attach/upload to this training task which has finished. That's when I realised  Task.get_task()   is not working as intended, but it is when I have a  Task.init()  before it.
Are you doingÂ
plt.imshow
Nope
And yes, I set the  report_image=False
, I generate some more graphs with a file calledÂ
graphs.py
 and want to attach/upload to this training task
Make total sense to use Task.get_task, I just want to make sure that you are aware of all the options, so you pick the correct one for you :)
SmarmyDolphin68 is it the same code as in the snippet ?
What's the trains version / trains-server version ?
SmarmyDolphin68  okay what's happening is the process exists before the actual data is being sent (report_matplotlib_figure is an async call, and data is sent in the background)
Basically you should just wait for all the events to be flushedtask.flush(wait_for_uploads=True)That said, quickly testing it it seems it does not wait properly (again I think this is due to the fact we do not have a main Task here, I'll continue debugging)
In the meantime you can just dosleep(3.0)And it will solve the issue  🙂
It's going to Debug Samples with the RC too
AgitatedDove14 , here's the code snippet you requested
0.16.1-320
you mean 0.16?
Ah my bad, I picked up the version from docker-compose file :D
SmarmyDolphin68 What's the matplotlib version ? and python version?
Go to  https://demoapp.trains.allegro.ai/profile
You should see something like 0.16.2-123