Создание различных форм маркера в сюжете / запонках - PullRequest
0 голосов
/ 27 апреля 2018

Этот пост похож на этот ( Изменение формы маркера в Plotly .js ), но я не могу заставить что-либо работать в python. Во-первых, я пытаюсь создать многострочный график (который я сделал как на plt, так и на графике ... код ниже), но, будучи дальтоником (что я и есть), я не могу часто сказать, что я ищу на графике потому что маркеры - это всегда круг (даже если этикетка включена, иногда она обрезается (т. е. когда этикетки слишком длинные), и я не могу понять, на что я смотрю). Графики графика / запонки намного лучше с точки зрения интерактивности, и, поскольку я делаю много презентаций данных, это будет мой предпочтительный метод, если я смогу выяснить, как изменить маркеры для каждой строки.

Я использую Jupyter Notebook (версия: 5.4.0) и Python (версия 3.6.4)

Снимок экрана файла dummy_data.

dummy_data_screenshot

В matplotlib я сделал следующее, чтобы прикрепить вывод (обратите внимание на различные маркеры формы):

import matplotlib.pyplot as plt
import matplotlib as mpl ##(version: 2.1.2)
import pandas as pd ##(version: 0.22.0)
import numpy as np ##(version: 1.14.0)

import plotly.graph_objs as go
from plotly.offline import download_plotlyjs,init_notebook_mode,plot,iplot
import cufflinks as cf ##(version: 0.12.1)

init_notebook_mode(connected=True)
cf.go_offline()

%matplotlib notebook

df = pd.read_csv("desktop\dummy_data.csv")

fx = df.groupby(['studyarm', 'visit'])\ 
['totdiffic_chg'].mean().unstack('studyarm').drop(['02_UNSCH','ZEOS'])


valid_markers = ([item[0] for item in 
mpl.markers.MarkerStyle.markers.items() if 
item[1] is not 'nothing' and not item[1].startswith('tick') 
and not item[1].startswith('caret')])

markers = np.random.choice(valid_markers, df.shape[1], replace=False)

ax = fx.plot(kind = 'line', linestyle='-')
for i, line in enumerate(ax.get_lines()):
line.set_marker(markers[i])
ax.legend(loc='best')
ax.set_xticklabels(df.index, rotation=45)
plt.title('Some Made Up Data')
plt.ylabel('Score', fontsize=14)
plt.autoscale(enable=True, axis='x', tight=True)
plt.tight_layout()

plt_image_dummy_data

Я использовал приведенный ниже код, и он создал график с помощью plotly / cufflinks:

fx.iplot(kind='line', yTitle='Score', title='Some Made Up Data', 
mode=markers, filename='cufflinks/simple-line')

plotly_image_dummy_data

Я искал в Интернете последние несколько дней и вижу много вариантов изменения цвета маркера, непрозрачности и т. Д., И т. Д., Но я не могу найти способ автоматического и случайного изменения форма маркеров ИЛИ вручную изменить каждую отдельную линию на отдельную форму маркера.

Я уверен, что это простое исправление, но я не могу понять это. Любая помощь (или толчок в правильном направлении) будет очень цениться.!

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете указать форму для точечных графиков, используя свойство символа, например ниже:

 Scatter(x = ..., y = ..., mode = 'lines+markers',
         marker = dict(size = 10, symbol = 1, ...))

Например:

  • 0 дает круги
  • 1 дает квадраты
  • 3 дает знак «+»
  • 5 дает треугольники и т. Д.

Посмотрите на запись символа в документе Плотли здесь: https://plot.ly/python/reference/#box-marker-symbol

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...