我正在学习使用 pyplot.express 并努力解决以下设计问题:在多面图中,每个子图的轴标题都会重复(在示例中为“花瓣宽度 (cm)”)。有没有办法使用 pyplot.express 为分面图上的所有子图获取单轴标签?
谢谢,迈克尔
最小的例子:
from sklearn.datasets import load_iris
import plotly.express as px
import pandas as pd
import numpy as np
# import iris-data
iris = load_iris()
df= pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns= iris['feature_names'] + ['target'])
df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)
# plot using pyplot.express
fig = px.bar(df, x="sepal length (cm)", y="petal width (cm)", color = 'petal length (cm)', facet_row="species")
fig.show()
Run Code Online (Sandbox Code Playgroud)
我很想知道是否有相当于:
import pandas as pd
import numpy as np
data = pd.DataFrame({'Day':range(10),
'Temperature': np.random.rand(10),
'Wind': np.random.rand(10),
'Humidity': np.random.rand(10),
'Pressure': np.random.rand(10)})
data.set_index('Day').plot(subplots=True, layout=(2,2), figsize=(10,5))
plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)
这会生成 Plotly 图表,而不是 matplotlib 图表。
我正在尝试在绘图表达中实现分组条形图(或)堆叠条形图
我已经使用plotly(这非常简单)实现了它,下面是它的代码。数据框中共有六列 ['Rank', 'NOC', 'Gold', 'Silver', 'Bronze', 'Total']
`
trace1=go.Bar(x=olympics_data['NOC'],y=olympics_data['Gold'],marker=dict(color='green',opacity=0.5),name="Gold")
trace2=go.Bar(x=olympics_data['NOC'],y=olympics_data['Silver'],marker=dict(color='red',opacity=0.5),name="Silver")
trace3=go.Bar(x=olympics_data['NOC'],y=olympics_data['Bronze'],marker=dict(color='blue',opacity=0.5),name="Bronze")
data=[trace1,trace2,trace3]
layout = go.Layout(title="number of medals in each category for various countries",xaxis=dict(title="countries"),yaxis=dict(title="number of medals"),
barmode="stack")
fig = go.Figure(data,layout)
fig.show()`
Run Code Online (Sandbox Code Playgroud)
输出:
我期待使用plotly-express 得到类似的输出。
我想更改plotly.express条形图图例中项目的顺序。例如,我想在此图上显示“午餐前的晚餐”(当前的行为对于水平条形图尤其尴尬,因为条形的顺序与图例顺序相反):
import plotly.express as px
df = px.data.tips()
# Sort to put dinner on top.
df.sort_values('time', ascending=False, inplace=True)
fig = px.bar(df, y='sex', x='total_bill', color='time', barmode='group',
orientation='h')
fig.update_layout(yaxis={'categoryorder': 'total ascending'})
fig.show()
Run Code Online (Sandbox Code Playgroud)
我目前正在使用plotlyexpress 来创建Sunburst 图表。然而,我意识到孩子们的标称值是按字母顺序排列的。特别是对于绘制非常不幸的月份......你知道如何处理这个问题吗?也许是财产或某种解决方法?下面有一个例子,你可以自己尝试一下。提前致谢!
import plotly.express as px
import pandas as pd
import calendar
months = [x for x in calendar.month_name if x]
#Create Dataframe
data = []
for m in months:
data.append(['2018', m, 2])
df = pd.DataFrame(data, columns=['Year', 'Month', 'Value'])
#Compute Sunburst
fig = px.sunburst(df, path=['Year', 'Month'], values='Value')
fig.show()
Run Code Online (Sandbox Code Playgroud)
我有一个示例数据集(pd.read_clipboard(sep=\'\\s\\s+\') 读入 pandas):
\n reference Latitude Longitude year subreg dot_size\ndate \n1984-08-05 1985-12 24.033333 59.916667 1984 62 80\n1984-08-02 1985-11 22.316667 91.716667 1984 62 80\n1984-07-30 1985-10 6.266667 3.183333 1984 62 80\n1984-05-12 1985-9 1.816667 3.200000 1984 93 80\n1983-04-10 1985-8 6.983333 -58.033333 1983 93 80\n1983-03-02 1985-7 4.133333 6.950000 1983 57 80\n1981-04-10 1985-1 13.500000 42.716667 1981 22 80\n1980-02-13 1985-5 16.541667 111.241667 1980 51 80\nRun Code Online (Sandbox Code Playgroud)\n我使用 Plotly express 在 scatter_geo 上绘制了它
\nsubreg = df[\'subreg\']\npx.scatter_geo(df, lat=df[\'Latitude\'], lon=df[\'Longitude\'], color=\'subreg\', height=600)\nRun Code Online (Sandbox Code Playgroud)\n但我发现这些点太小,无法有效阅读,尤其是地图白色部分上的四个黄点。
\n\n我尝试了一些技巧来改变大小,例如,df[\'dot_size\'] …
如果你\xe2\x80\x99和我一样,你喜欢Plotly Express,但是当你遇到Express返回的数字可以\xe2\x80\x99t利用\xe2\x80\x98make_subplots()\xe2\x80的问题时感到沮丧\x99 因为 make_subplots 接受的是痕迹而不是数字。在这篇文章中,我\xe2\x80\x99d想分享我自己的解决方案,关于如何仅使用Plotly Express(和plotly.subplots)创建包含两种不同类型的图形(如下所示)的子图
\n\n我在 Dash 应用程序上创建了一个绘制清晰的面积图。该图表工作正常,但 x 轴上的第一个点和最后一个点似乎超出了图表,只能看到一半(如附加屏幕截图所示)。我也尝试过更改图形的宽度和高度值,但似乎没有任何效果。我是 python 和 dash 的新手,所以任何帮助将不胜感激,还发布了我关于堆栈溢出的第一个问题,所以如果我错过了任何内容或没有正确完成,我深表歉意。

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import plotly.express as px
import pandas as pd
import pyodbc
import dash_bootstrap_components as dbc
from datetime import datetime as dt
from app import app
page2 = html.Div(
[
dbc.Row(
[
dbc.Col(
# dbc.Card(
html.Div(
id="opportunity_heatmap",
className="chart_div pretty_container",
children = [
dcc.Graph(id='my_graph',
config={
'staticPlot': False, # True, False
'scrollZoom': True, # True, False
'doubleClick': 'reset', # …Run Code Online (Sandbox Code Playgroud) 我想向我的线图添加许多带有箭头的注释。但是,我不想手动添加它们(就像我在下面的代码中所做的那样)。这将是一项艰巨的工作,我宁愿直接从 df['text'] 列(或本列中的列表)添加注释。
import plotly.express as px
import pandas as pd
# assign data of lists.
data = {'x': [0, 1, 2, 3, 4, 5, 6, 7, 8],
'y': [0, 1, 3, 2, 4, 3, 4, 6, 5],
'text':["","","Annotation1","","Annotation2","","","",""]}
# Create DataFrame
df = pd.DataFrame(data)
fig = px.line(df, x='x', y='y', title='I want to add annotation with the tekst column in my dataframe (instead of manually)')
fig.add_annotation(x=2, y=3,
text="Annotation1 (added manual)",
showarrow=True,
arrowhead= 2)
fig.add_annotation(x=4, y=4,
text="Annotation2 (added manual)",
showarrow=True,
arrowhead= …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用plotly(v 5.11.0)绘制图表,其中我试图为每个facet_row生成不同的y轴。y 轴应与该facet_row 内的所有facet_col 匹配。
使用fig.update_yaxes(matches = None)似乎并不能解决上述问题。如果可能,请提出任何解决方案。
fig = px.bar(query_fb, x = "modelName",
y = "value", facet_col = "holdingPeriod",
facet_col_wrap = 3,
facet_row = 'dataItem',
color = "modelName")
fig.for_each_yaxis(lambda y: y.update(title = ''))
fig.for_each_annotation(lambda a: a.update(
text=a.text.split("=")[-1]))
yxs = dict(tickformat = yaxisfmt )
fig.update_xaxes(visible=False)
fig.update_yaxes(yxs, tickformat = yaxisfmt,hoverformat = yaxisfmt)
fig.update_layout(autosize=False,
width= 250*len(self.modelId),
height=600,
margin=dict(l=50, r=10, b=60, t=60),
#legend= dict(orientation="h",),
title_x = 0.2,title= "")
Run Code Online (Sandbox Code Playgroud) plotly-express ×10
python ×9
plotly ×8
plotly-dash ×3
pandas ×2
annotations ×1
graph ×1
plot ×1
python-3.8 ×1