标签: plotly-express

Plotly:躲避散点图分类轴上的重叠点

我正在尝试使用绘图来比较使用误差线作为置信区间的回归模型的系数。我使用以下代码来绘制它,使用变量作为y散点图中的分类轴。问题是这些点是重叠的,我想像设置时在条形图中发生的那样避开它们barmode='group'。如果我有一个数字轴,我可以手动躲避它们,但我做不到。

fig = px.scatter(
        df, y='index', x='coef', text='label', color='model',
        error_x_minus='lerr', error_x='uerr',
        hover_data=['coef', 'pvalue', 'lower', 'upper']
    )
fig.update_traces(textposition='top center')
fig.update_yaxes(autorange="reversed")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

使用构面,我几乎得到了我想要的结果,但有些标签超出了绘图范围并且不可见:

fig = px.scatter(
    df, y='model', x='coef', text='label', color='model',
    facet_row='index',
    error_x_minus='lerr', error_x='uerr',
    hover_data=['coef', 'pvalue', 'lower', 'upper']
)
fig.update_traces(textposition='top center')
fig.update_yaxes(visible=False)
fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1]))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有人对于在第一种情况下躲避点或在第二种情况下显示标签有任何想法或解决方法吗?

提前致谢。

PS:这是我为生成绘图而制作的随机假数据框:

df = pd.DataFrame({'coef': {0: 1.0018729737113143,
  1: 0.9408864645423858,
  2: 0.29796556981484884,
  3: -0.6844053575764955,
  4: -0.13689631932690113,
  5: 0.1473096200402363,
  6: 0.9564712505670716,
  7: 0.956099003887811,
  8: 0.33319108930207175,
  9: -0.7022778825729681,
  10: -0.1773916842612131,
  11: 0.09485417304851751},
 'index': {0: 'const',
  1: …
Run Code Online (Sandbox Code Playgroud)

python plotly plotly-python plotly-express

5
推荐指数
1
解决办法
1810
查看次数

用 plotly express 叠加两个直方图

我想使用以下简单的代码叠加两个直方图,我目前只显示一个与另一个相邻的直方图。这两个数据帧的长度不同,但叠加它们的直方图值仍然有意义。

import plotly.express as px

fig1 = px.histogram(test_lengths, x='len', histnorm='probability', nbins=10)
fig2 = px.histogram(train_lengths, x='len', histnorm='probability', nbins=10)
fig1.show()
fig2.show()
Run Code Online (Sandbox Code Playgroud)

纯情节,这是从文档中复制的方式:

import plotly.graph_objects as go

import numpy as np

x0 = np.random.randn(500)
# Add 1 to shift the mean of the Gaussian distribution
x1 = np.random.randn(500) + 1

fig = go.Figure()
fig.add_trace(go.Histogram(x=x0))
fig.add_trace(go.Histogram(x=x1))

# Overlay both histograms
fig.update_layout(barmode='overlay')
# Reduce opacity to see both histograms
fig.update_traces(opacity=0.75)
fig.show()
Run Code Online (Sandbox Code Playgroud)

我只是想知道情节表达是否有任何特别惯用的方式。希望这也能说明 plotly 和 plotly express 之间的完整性和不同层次的抽象。

plotly plotly-express

4
推荐指数
1
解决办法
6893
查看次数

Plotly-Express:如何在按列名设置颜色时修复颜色映射

plotly express用于散点图。标记的颜色由我的数据框的变量定义,如下例所示。

import pandas as pd
import numpy as np
import plotly.express as px

df = px.data.iris()

fig = px.scatter(df[df.species.isin(['virginica', 'setosa'])], x="sepal_width", y="sepal_length", color="species")
fig.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

当我添加此变量的另一个实例时,颜色映射会发生变化(首先,'virginica',是红色,然后是绿色)。

fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species",size='petal_length', hover_data=['petal_width'])
fig.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

添加变量时如何保持颜色的映射?

python plotly plotly-express

4
推荐指数
2
解决办法
1万
查看次数

AttributeError:“Figure”对象在 Flask 中没有属性 savefig

我正在尝试在 Flask 中显示plotly.express条形图。但它正在给予'Figure' object has no attribute savefig error。使用时图像可以正确显示fig.show()

import matplotlib.pyplot as plt
import plotly.express as px

figs = px.bar(
    comp_df.head(10),
    x = "Company",
    y = "Staff",
    title= "Top 10 departments",
    color_discrete_sequence=["blue"],
    height=500,
    width=800
)
figs.savefig('static/images/staff_plot.png')
#    fig.show()
return render_template('plot.html', name='new_plot', url='static/images/staff_plot.png')
Run Code Online (Sandbox Code Playgroud)

plot.html,图像显示如下:

<img src={{ url}} >
Run Code Online (Sandbox Code Playgroud)

flask python-3.x plotly-python plotly-express

4
推荐指数
1
解决办法
2万
查看次数

Plotly:如何使用 plotly express 在单迹散点图中显示图例?

抱歉,帖子太长了。我是 python 和 plotly 的新手,所以请耐心等待。

我正在尝试制作带有趋势线的散点图,以向我展示包括回归参数在内的图例图例,但出于某种原因,我不明白为什么px.scatter不向我展示我的轨迹图例。这是我的代码

fig1 = px.scatter(data_frame = dataframe,
             x="xdata",
             y="ydata",
             trendline = 'ols')

fig1.layout.showlegend = True
fig1.show()
Run Code Online (Sandbox Code Playgroud)

这会显示散点图和趋势线,但即使我试图覆盖它也没有图例。

我曾经pio.write_json(fig1, "fig1.plotly")将它导出到 jupyterlab plotly 图表工作室并手动添加图例,但即使我启用了它,它也不会显示在图表工作室中。

我打印了变量print(fig1)以查看发生了什么,这是(部分)结果

(Scatter({
    'hovertemplate': '%co=%{x}<br>RPM=%{y}<extra></extra>',
    'legendgroup': '',
    'marker': {'color': '#636efa', 'symbol': 'circle'},
    'mode': 'markers',
    'name': '',
    'showlegend': False,
    'x': array([*** some x data ***]),
    'xaxis': 'x',
    'y': array([*** some y data ***]),
    'yaxis': 'y'
}), Scatter({
    'hovertemplate': ('<b>OLS trendline</b><br>RPM = ' ... ' <b>(trend)</b><extra></extra>'),
    'legendgroup': '',
    'marker': {'color': '#636efa', …
Run Code Online (Sandbox Code Playgroud)

python data-visualization plotly plotly-python plotly-express

4
推荐指数
1
解决办法
4530
查看次数

使用 Plotly 绘制分类散点图

我正在尝试绘制具有离散数值 x 值的散点图。问题在于Plotly将值解释为连续的并且生成的点间隔不均匀。在Seaborn我可以通过将 x 值转换为 来解决这个问题str,但这在 中不起作用Plotly。有什么解决办法吗?MWE如下:

4489058292    0.60
4600724046    0.26
6102975308    0.19
6122589624    0.10
4467367136    1.67
6008680375    2.50
4588967207    0.21
4941295226    0.34
4866979526    0.18
4906915418    0.38
Run Code Online (Sandbox Code Playgroud)
test_df = pd.read_clipboard(sep="\s+", names=["ID", "Value"], index_col=0)

fig = px.scatter(
    test_df,
    x=test_df.index.astype(str),
    y=test_df,
)

fig.update_layout(showlegend=False)
Run Code Online (Sandbox Code Playgroud)

python pandas plotly-express

4
推荐指数
1
解决办法
2696
查看次数

在 plotly 中显式设置箱线图的颜色

我用来plotly express绘制boxplot如下图所示:

px.box(data_frame=df, 
       y="price", 
       x="products",
       points="all")
Run Code Online (Sandbox Code Playgroud)

然而,产品的盒盆以相同的颜色显示。它们是四种产品。我想用不同的颜色为每个颜色着色,使用附加参数color_discrete_sequence不起作用。

python python-3.x plotly plotly-python plotly-express

4
推荐指数
1
解决办法
5188
查看次数

绘图(px)animation_frame错误,日期时间不被接受

我想通过绘图制作类似于以下示例的动画条形图:https://plotly.com/python/animations/

我有以下代码:

fig = px.bar(
  eu_vaccine_df.sort_values('date'), 
  x='country', y='people_vaccinated_per_hundred',
  color='country',
  animation_frame='date',
  animation_group='country',
  hover_name='country',
  range_y=[0,50],
  range_x=[0,30]
)
fig.update_layout(
  template='plotly_dark',
  margin=dict(r=10, t=25, b=40, l=60)
)
fig.show()
Run Code Online (Sandbox Code Playgroud)

我相信这个问题与我的数据框的“日期”列有关。目前它是一个日期时间,并已使用 pd.to_datetime(covid_df['date'] 进行转换

我得到的错误如下:

ValueError                                Traceback (most recent call last)
<ipython-input-185-ff9c8cc72d87> in <module>
      7   hover_name='country',
      8   range_y=[0,50],
----> 9   range_x=[0,30]

     10 )
     11 fig.update_layout(

/opt/conda/lib/python3.7/site-packages/plotly/express/_chart_types.py in bar(data_frame, x, y, color, facet_row, facet_col, facet_col_wrap, facet_row_spacing, facet_col_spacing, hover_name, hover_data, custom_data, text, base, error_x, error_x_minus, error_y, error_y_minus, animation_frame, animation_group, category_orders, labels, color_discrete_sequence, color_discrete_map, color_continuous_scale, range_color, color_continuous_midpoint, opacity, orientation, barmode, …
Run Code Online (Sandbox Code Playgroud)

plotly plotly-express

4
推荐指数
1
解决办法
3280
查看次数

在 Plotly Express 中删除自定义悬停卡右侧的颜色

custom_data当通过/范例以plotly express 创建自定义悬停卡时hovertemplate,颜色显示在其右侧。例如,此处在“a=1”右侧显示“蓝色”。怎样才能去掉“蓝色”呢?

import pandas as pd
import plotly.express as px

df = pd.DataFrame(dict(x=["a"], y=[1], color=["blue"], hover=["a=1"]))
fig = px.bar(df, "x", "y", "color", custom_data=["hover"])
fig.update_traces(hovertemplate="%{customdata[0]}")
Run Code Online (Sandbox Code Playgroud)

图表截图

(可以在此处访问 Colab 笔记本)

python plotly plotly-python plotly-express

4
推荐指数
1
解决办法
784
查看次数

为什么plotlyexpress比plotlygraph_objects性能好得多?

我正在可视化包含 400K 到 250 万个点的散点图。我预计在可视化之前需要进行下采样,但为了看看我在plotlyexpress 中使用 400k 数据集进行了多少试点测试,并且绘图快速、美观且响应迅速地弹出。

为了制作交互式图形,我确实需要使用plotly.graph_objects,因为我需要具有不同色阶的多条迹线,所以我用graph_objects制作了基本相同的图形,它不仅速度较慢,还使我的计算机崩溃了。

我真的很想尽可能少地进行下采样,并且我对这两种方法之间的纯粹性能差异感到惊讶,所以我想这可以归结为我的问题:

为什么存在如此大的性能差异?是否可以更改 graph_objects 中的布局/图形/任何参数以缩小差距?

这是一个片段,显示了我所说的基本相同的图表的含义:

图对象

        fig = go.Figure()
        fig.add_trace(go.Scatter(x = x_values, y = y_values, opacity = opacity, marker = {
                'size': size,
                'color': community,
                'colorscale': colorscale
            }))
Run Code Online (Sandbox Code Playgroud)

表达

        pacmap_map = px.scatter(x = x_values, y = y_values, color_continuous_scale=colorscale,  opacity = opacity, color = community)
        pacmap_map.update_traces(marker = {
                'size': size
            })

Run Code Online (Sandbox Code Playgroud)

我本来期望性能是相同的,或者至少在相同的范围内,但 Express 的工作就像一个梦想,而 graph_objects 会崩溃 jupyter 内核以及它运行的任何 IDE,所以有很大的差异。

python plotly plotly-express

4
推荐指数
1
解决办法
1798
查看次数