Я изо всех сил пытаюсь настроить легенду моего графика рассеяния.Вот снимок:
![Fun with MatPlotLib](https://i.stack.imgur.com/huiQo.png)
А вот пример кода:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
my_df = pd.DataFrame([[5, 3, 1], [2, 1, 2], [3, 4, 1], [1, 2, 1]],
columns=["DUMMY_CT", "FOO_CT", "CI_CT"])
g = sns.scatterplot("DUMMY_CT", "FOO_CT", data=my_df, size="CI_CT")
g.set_title("Number of Baz", weight="bold")
g.set_xlabel("Dummy count")
g.set_ylabel("Foo count")
g.get_legend().set_title("Baz count")
Также я работаю в Jupyter-лабораторная записная книжка с Python 3, если это поможет.
Красная проблема
Прежде всего, я хочу скрыть имя переменной CI_CT
(на рисунке обведено красным),Изучив всю документацию на этот день, я нашел метод get_legend_handlers_label
(см. здесь ), который производит следующее:
>>> g.get_legend_handles_labels()
([<matplotlib.collections.PathCollection at 0xfaaba4a8>,
<matplotlib.collections.PathCollection at 0xfaa3ff28>,
<matplotlib.collections.PathCollection at 0xfaa3f6a0>,
<matplotlib.collections.PathCollection at 0xfaa3fe48>],
['CI_CT', '0', '1', '2'])
Где я могу обнаружить моего дорогого CI_CT
строка.Однако я не могу изменить это имя или полностью его скрыть.Я нашел способ dirty , который в основном заключается в неэффективном использовании кадра данных, переданного как параметр data
.Вот scatterplot
вызов:
g = sns.scatterplot("DUMMY_CT", "FOO_CT", data=my_df, size=my_df["CI_CT"].values)
Результат здесь:
![First issue solved in a dirty way](https://i.stack.imgur.com/MQ2My.png)
Работает, но есть уборщик способ достижения этого?
Зеленая штуковина
Отображение уровня 0
в этой легенде неверно, поскольку в столбце * 1044 нет нулевого значенияmy_df
.Поэтому это вводит в заблуждение читателей, которые могут предположить, что меньшие точки представляют значение 0 или 1. Я хочу установить определенный масштаб таким образом, как это можно сделать для осей x и y.Однако я не могу этого достичь.Любая идея?
TL; DR: более широкий вопрос, который может решить все
Эти приключения заставляют меня задуматься, есть ли способ обработки данных, которые можно передать на диаграммы рассеяния с помощью hue
и size
параметры в чистом виде по оси X и Y.Это действительно возможно?
Прошу прощения за мой английский, пожалуйста, дайте мне знать, если вопрос слишком широкий или неправильно помечен.