如何在绘图交互式绘图中手动更改标记的形状

时间:2019-07-23 17:31:58

标签: python plotly

我正在尝试在交互式绘图中为不同的颜色分配不同的标记。通过使用以下脚本,我可以获得交互式绘图,可以更改标记“ o”的大小,可以注释文本。附上我的情节情节。我想更改标记,如所附PCA图所示。plotly_plot PCA plot

#SCRIPT

import plotly 
import plotly.plotly as py
from plotly.graph_objs import Scatter
import plotly.graph_objs as go
plotly.tools.set_credentials_file(username='XXX', api_key='XXXX')
#py.plot(data, filename = 'basic-line', auto_open=True, Transforms = 'Split')

trace1 = Scatter(
    x=x1,           # x-coordinates of trace
    y=y1,          # y-coordinates of trace
    mode='markers + text',   # scatter mode
    text = label1, textposition='top center',
    marker = dict(size = 15, color = color_3),
     textfont=dict(
        color='black',
        size=18,
        family='Times New Roman'
     )

    )

layout = {
    'xaxis': {
        'showticklabels': False,
        'showgrid': False,
        'zeroline': False,
    },
    'yaxis': {
        'showticklabels': False,
        'showgrid': False,
        'zeroline': False,
    }
}
data = [trace1]

fig = {
    'data': data,
    'layout': layout,
}

py.plot(fig, filename='example1')

我手动更改了散点的颜色,我有一个颜色列表(color_3)。我可以为每种颜色分配一个标记,例如marker_list。但是,如何在图上使用此marker_list来获得类似于所附PCA图的图?在进行PCA绘图时,我将其添加到了ax.scatter中,请参见以下代码段:

for i in range(len(marker_list)):
    ax.scatter(x1[i], y1[i], color = color_3[i], s=150, marker=marker_list[i], alpha=0.8, edgecolors='none')

我可以在上述脚本中的某处使用相同的标记列表来获得交互式的绘图吗?任何帮助,将不胜感激。预先感谢。

已更新 在Iljas建议之后,并使用列表中的名称代替数字。我得到了下面的图,我一直在寻找一种类型。 enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用symbol属性来设置标记的形状,例如:

trace1 = Scatter(
    x=x1,           # x-coordinates of trace
    y=y1,          # y-coordinates of trace
    mode='markers + text',   # scatter mode (more in UG section 1)
    text = label1, textposition='top center',
    marker = dict(size = 15, color = color_3, symbol = 'cross'), # Add symbol here!
     textfont=dict(
        color='black',
        size=18,
        family='Times New Roman'
     )

docs内有不同形状的概述

当然,您也可以按类别传递不同形状的列表,就像您对颜色所做的一样。