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