pandas.DataFrame.plot.scatter: передача столбца dataframe для определения размера работает в оболочке, но не в коде - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь создать точечную диаграмму, используя данные столбца из фрейма данных: когда я запускаю однострочную команду в оболочке, я могу достичь желаемого результата (значения в столбце фрейма данных определяют размер результирующих точек). Однако использование аналогичного кода в сценарии (в той же среде, на той же машине) не дает того же эффекта.

Я могу добиться желаемых результатов в оболочке:

>>> import matplotlib
>>> matplotlib.use('Agg')
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> df = pd.read_csv('CTRL_to_M5.csv', sep=',')
>>> df.reset_index().plot.scatter('index','logFC',s=df['BenjHoch'],c='FCGroup',colormap='jet')
<matplotlib.axes._subplots.AxesSubplot object at 0x7f3ffa238438> 

При переводе этих команд и запуске сценария я не могу добиться одинаковых результатов:

def dictToPlots(formattedTopTagsDict):
    """Docstring description of the dictToPlots function.
    """
    for tabName in formattedTopTagsDict.keys():
        if tabName != 'Experimental Design':

            indexedDF = formattedTopTagsDict[tabName].reset_index(drop=True)

            indexedDF.reset_index().plot.scatter('index',
                                                 'logFC',
                                                 s=indexedDF['BenjHoch'],
                                                 c='FCGroup',
                                                 colormap='jet')
            plt.savefig(tabName+'_COLOR_SHAPE.pdf')

    return None

Traceback:

  File "my_script.py", line 916, in <module>
    main()
  File "my_script.py", line 906, in main
    exactTest(reads, expDes, parseArgs.numTopTags, parseArgs.refGenome)
  File "my_script.py", line 386, in exactTest
    dictToPlots(formattedTopTagsDict, 'genes')
  File "my_script.py", line 832, in dictToPlots
    colormap='jet')
  File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 3516, in scatter
    return self(kind='scatter', x=x, y=y, c=c, s=s, **kwds)
  File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 2942, in __call__
    sort_columns=sort_columns, **kwds)
  File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 1973, in plot_frame
    **kwds)
  File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 1801, in _plot
    plot_obj.generate()
  File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 251, in generate
    self._make_plot()
  File "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_core.py", line 894, in _make_plot
    label=label, cmap=cmap, **self.kwds)
  File "/usr/local/lib/python3.6/dist-packages/matplotlib/__init__.py", line 1717, in inner
    return func(ax, *args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/matplotlib/axes/_axes.py", line 4032, in scatter
    alpha=alpha
  File "/usr/local/lib/python3.6/dist-packages/matplotlib/collections.py", line 880, in __init__
    self.set_sizes(sizes)
  File "/usr/local/lib/python3.6/dist-packages/matplotlib/collections.py", line 853, in set_sizes
    scale = np.sqrt(self._sizes) * dpi / 72.0 * self._factor
AttributeError: 'int' object has no attribute 'sqrt'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...