这篇文章与这篇文章类似(Change Marker Shapes in Plotly .js),但我似乎无法在python中使用任何东西。首先,我正在尝试制作一个多线图(我在plt和plotly中都做过......下面的代码),但是作为colorblind(我是)我不能经常告诉我在寻找什么因为标记总是一个圆圈(即使包含标签,它有时会被切断(即标签太长时),我无法弄清楚我在看什么)。在交互方面,情节/袖扣图表要好得多,因为我做了很多数据演示,如果我能弄清楚如何更改每一行的标记,这将是我的首选方法。
我正在使用Jupyter Notebook(版本:5.4.0)和Python(版本3.6.4)
dummy_data文件的屏幕截图。
在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')
我在网上搜索过去几天,我可以看到许多选项来更改标记颜色,不透明度等等,但我似乎无法找到一种方法来自动和随机地更改标记的形状或手动将每条线更改为单独的标记形状。
我确信这是一个简单的修复,但我无法弄明白。任何帮助(或在正确的方向上轻推)都将非常感激。!
答案 0 :(得分:2)
您可以使用符号属性指定散点图的形状,如下图:
Scatter(x = ..., y = ..., mode = 'lines+markers',
marker = dict(size = 10, symbol = 1, ...))
例如:
在这里查看Plotly文档中的“符号”条目:https://plot.ly/python/reference/#box-marker-symbol