这篇文章类似于这篇文章(在 Plotly .js 中更改标记形状),但我似乎无法在 Python 中使任何东西起作用。首先,我正在尝试制作一个多线图(我已经在 plt 和 plotly 中做过了...下面是代码),但由于我是色盲,我通常不能告诉我在 plotly 中看到了什么,因为标记总是一个圆圈(即使标签包括在内,它有时会被切断(例如,当标签太长时),我无法弄清楚我正在看什么)。在交互方面,plotly/cufflinks 图表要好得多,而且由于我做了很多数据演示,如果我能找出如何为每条线更改标记,这将是我的首选方法。
我正在使用 Jupyter Notebook (版本: 5.4.0) 和 Python (版本 3.6.4)
dummy_data 文件的截图。 dummy_data_screenshot 在 matplotlib 中,我执行了以下操作以获得附加的输出(请注意不同的形状标记):
我正在使用 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()
我使用了下面的代码,并通过plotly/cufflinks创建了图表:
fx.iplot(kind='line', yTitle='Score', title='Some Made Up Data',
mode=markers, filename='cufflinks/simple-line')
我已经搜索了网上几天,看到了许多可更改标记颜色、透明度等的选项,但是我无法找到一种自动和随机更改标记形状的方法或手动更改每个单独线条的标记形状。
我相信这是一个简单的修复方案,但我想不出来。任何帮助(或在正确方向上的提示)将非常感激!