袖扣模块的绘图不显示z轴分散p

2024-04-19 20:36:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用cufflink和{}的包装库来绘制z轴的散点图。我注意到了zz参数,但是我不能让它工作。在

from plotly.offline import init_notebook_mode, iplot
import plotly.graph_objs as go
init_notebook_mode()

import cufflinks as cf
cf.go_offline()

df = cf.datagen.lines(3,columns=['a','b','c'])

df.iplot(x='a', y='b', z='c', kind='scatter', mode='markers')

但不显示z轴。在

enter image description here


Tags: fromimportgodf参数initmodeas
2条回答

我只是在查看源代码时发现z参数没有考虑到kind=scatter作为kwarg。在

我只是分享一个解决方案,我发现,以满足我的需要精心使用。如果有人设法找到一个更快的解决办法与袖扣,我会非常高兴,否则这一个将做的工作。它还具有正确显示时间尺度的优点

import pandas as pd
import plotly.graph_objs as go
from plotly.offline import iplot


def py_scatter_by_z(x, y, z=None, x_title=None, y_title=None, mode='markers', colorscale='Jet', showscale=True, size=10,
                    line_color='black',
                    line_width=1, date_format="%b'%y", n_ticks=8, opacity=.5, scatter_kwargs=dict(), **layout_kwargs):
    '''
    Plots a scatter plot between two variables x and y and colors each point according to a variable z.

    Plotly and genereralized version of plot_scatter_by_time.

    Args:
        x (1D-Series | list | 1-D Array): values of x-axis. 
        y (1D-Series | list | 1-D Array): values of y-axis.
        z (1D-Series | list | 1-D Array): values of z-axis used for colorscale. Could be Numeric or dates. 
        x_title (str): label of x_axis.
        y_title (str): label of y_axis.
        mode (str): Scatter mode, i.e. "markers" or "lines+markers". Default is markers 
        colorscale (str): Colorscale to use to color the points. 
                    See plotly colorscale/matplotlib colormap. 
                    Default is "Jet".
        showscale (bool): Show colorbar if True (default). 
        size (int): size of the markers. Default is 10. 
        line_color (str): color of edge line of markers. Default is "black".
        line_width (int): width of edge line of markers. Default is 1.
        date_format (str): format of the   
        n_ticks (int): Number of ticks to display in the colorbar.  
        opacity (float between 0 and 1): opacity/transparency of filled markers. Default is 0.5.
        scatter_kwargs (dict): dictionary passed as kwargs for scatter. Default is empty dictionary. 
        **layout_kwargs: kwargs of the function, used as layout kwargs.

    Returns: dictionary representing a plotly figure.

    '''

    # Basic trace
    trace = go.Scatter(
        x=x,
        y=y,
        mode=mode,
    )

    layout = go.Layout(xaxis=dict(title=x_title), yaxis=dict(title=y_title))
    layout.update(**layout_kwargs)

    # Coloring points
    if z is not None:
        z_all_dates = pd.Series(index=z).index.is_all_dates

        if z_all_dates:
            # Special treatment if z is a datetime vector
            color = pd.to_numeric(z)
            step = int(len(z) / n_ticks)
            z = list(z)
            ticktext = [date.strftime(date_format) for date in z[1::step]]
            tickvals = list(color)[1::step]
            colorbar = dict(nticks=n_ticks,
                            tickvals=tickvals,
                            ticktext=ticktext)
        else:
            color = z
            colorbar = dict()

        marker = {'marker': dict(size=size, color=color, colorscale=colorscale,
                                 showscale=showscale, opacity=opacity, colorbar=colorbar)}
        trace.update({'text': z})

    else:
        marker = {'marker': dict(size=size)}

    # Construct and plot figure
    marker['marker'].update({'line': {'color': line_color, 'width': line_width}})
    trace.update(marker)
    trace.update(**scatter_kwargs)
    data = [trace]
    fig = go.Figure(data=data, layout=layout)
    iplot(fig)

    return fig


from plotly.offline import init_notebook_mode, iplot
import plotly.graph_objs as go
init_notebook_mode()

import cufflinks as cf
cf.go_offline()

df = cf.datagen.lines(3,columns=['a','b','c'])
df.index = pd.to_datetime(df.index) # Example with a time scale
py_scatter_by_z(df['a'], df['b'], df.index)

enter image description here

散点图只有x轴和y轴。将kind设置为scatter3d将添加z轴。在

from plotly.offline import init_notebook_mode, iplot
import plotly.graph_objs as go
init_notebook_mode()

import cufflinks as cf
cf.go_offline()

df = cf.datagen.lines(3,columns=['a','b','c'])

df.iplot(x='a', y='b', z='c', kind='scatter3d', mode='markers')

enter image description here

如果要在绘图中添加三维,也可以使用散点图并将信息添加到颜色中。在这种情况下,不使用袖扣比较容易。在

^{pr2}$

enter image description here

相关问题 更多 >