我正在尝试使用此代码并排绘制两个分布图
fig,(ax1,ax2) = plt.subplots(1,2)
sns.displot(x =X_train['Age'], hue=y_train, ax=ax1)
sns.displot(x =X_train['Fare'], hue=y_train, ax=ax2)
Run Code Online (Sandbox Code Playgroud)
它返回以下结果(两个空的子图,后跟一个分布在两行上的图)-
如果我用 violinplot 尝试相同的代码,它会按预期返回结果
fig,(ax1,ax2) = plt.subplots(1,2)
sns.violinplot(y_train, X_train['Age'], ax=ax1)
sns.violinplot(y_train, X_train['Fare'], ax=ax2)
Run Code Online (Sandbox Code Playgroud)
为什么 displot 返回不同类型的输出,我该怎么做才能在同一行上输出两个图?
即使在模板中传递之后,图表仍然显示图例标题,而它应该将默认设置更改为无图例标题'title':None。layout.legend
如果我用 手动传递它fig.update_layout(),它就会删除标题。
为什么会发生这种情况?如何将默认设置更改为无图例标题?
这是重新创建图形的代码(手动传入的内容update.layout()已被注释掉)-
import plotly.graph_objects as go
import plotly.io as pio
import plotly.express as px
import pandas as pd
pio.templates['my_theme'] = go.layout.Template({
'layout': {'annotationdefaults': {'arrowcolor': '#2a3f5f', 'arrowhead': 0, 'arrowwidth': 1},
'autotypenumbers': 'strict',
'coloraxis': {'colorbar': {'outlinewidth': 0, 'ticks': ''}},
'colorscale': {'diverging': [[0, '#8e0152'], [0.1, '#c51b7d'],
[0.2, '#de77ae'], [0.3, '#f1b6da'],
[0.4, '#fde0ef'], [0.5, '#f7f7f7'],
[0.6, '#e6f5d0'], [0.7, '#b8e186'],
[0.8, '#7fbc41'], [0.9, '#4d9221'], [1,
'#276419']],
'sequential': [[0.0, '#0d0887'],
[0.1111111111111111, '#46039f'],
[0.2222222222222222, '#7201a8'],
[0.3333333333333333, '#9c179e'], …Run Code Online (Sandbox Code Playgroud) 当我尝试绘制此图时出现错误-
sns.distplot(X_train, x='Age') #Age is a feature in X_train
Run Code Online (Sandbox Code Playgroud)
当我尝试hue在其中添加参数时出现类似错误
sns.distplot(X_train['Age'], hue=y_train)
TypeError: distplot() got an unexpected keyword argument 'hue'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?这是我尝试代码的地方 -
当传递style参数和<span>起始块时,我在 Jupyter 笔记本的各个单元格中更改了font-size和所有这些。font-family就像这样——
<span style="font-family:Verdana">Irrelavant text.</span>\nRun Code Online (Sandbox Code Playgroud)\n或者
\n# Model Building\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83\xe2\x80\x83<span style="font-size:12px">[Jump to Beginning](#top)</span>\nRun Code Online (Sandbox Code Playgroud)\n直到大约一周前,它一直工作得很好,当时所有的style我笔记本中的所有效果都消失了。代码显然仍然存在于降价单元中,但它只是没有显示预期的结果。在 Kaggle 或 JupyterLab 上运行时,同一个笔记本仍然可以工作并加载样式。Jupyter 笔记本是否停止支持它,或者我是否无意中更改了某些内容?在不更改代码的情况下,有什么解决方法,甚至可以解决该问题?
它曾经看起来像这样(避免黑色主题,屏幕截图来自 JupyterLab)-
\n\n现在看起来是这样的——
\n\n如您所见,font-size:12px不再有任何效果。font-family和喜欢也是如此。
编辑: 笔记本
\n我希望第 5 个子图位于第三行两列的中心。(我已经尝试通过添加domain参数来做到这一点)。这是重现它的代码-
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots
continent_df = pd.read_csv('https://raw.githubusercontent.com/vyaduvanshi/helper-files/master/continent.csv')
temp_cont_df = pd.pivot_table(continent_df, index='continent', aggfunc='last').reset_index()
fig = make_subplots(rows=3, cols=2, specs=[[{'type':'pie'},{'type':'pie'}],[{'type':'pie'},{'type':'pie'}],
[{'type':'pie'},{'type':'pie'}]])
fig.add_pie(labels=continent_df.continent, values=continent_df.new_cases, row=1,col=1)
fig.add_pie(labels=continent_df.continent, values=continent_df.new_deaths, row=1,col=2)
fig.add_pie(labels=continent_df.continent, values=continent_df.new_recovered, row=2,col=1)
fig.add_pie(labels=continent_df.continent, values=continent_df.new_tests, row=2,col=2)
fig.add_pie(labels=temp_cont_df.continent, values=temp_cont_df.active_cases, row=3,col=1,domain={'x':[0.25,0.75],'y':[0,0.33]})
Run Code Online (Sandbox Code Playgroud)
如果我不在参数中包含第 6 个图specs,则会引发错误。
这不是这个的重复。
添加<extra></extra>确保trace#已从图表中删除。但是有没有办法让我把它设为默认设置?
我正在创建一个自定义的 plotly 主题,并希望它成为默认设置,但它包含在trace类中而不是包含在类中layout。此外,将它添加到调用中的每个跟踪plotly.go调用是重复的。
要重新创建图形 -
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots
world_df = pd.DataFrame({'date': {494: '2021-05-09',
495: '2021-05-10',
496: '2021-05-11',
497: '2021-05-12',
498: '2021-05-13',
499: '2021-05-14',
500: '2021-05-15',
501: '2021-05-16',
502: '2021-05-17',
503: '2021-05-18'},
'total_deaths': {494: 3293029.0,
495: 3303796.0,
496: 3317412.0,
497: 3331346.0,
498: 3344481.0,
499: 3357610.0,
500: 3369259.0,
501: 3379349.0,
502: 3389992.0,
503: 3404338.0}})
#Comment out line below for exact …Run Code Online (Sandbox Code Playgroud) 从图像中可以看出,范围滑块的脚手架已生成,但其内部的迹线并未生成。除此之外,它的功能也很齐全。通过一些实验,我发现只有当你设置 no 时才可以。行数为 500 或更少,它会正确显示。有没有办法显示更多行?这是重现的代码-
size = 501 #change this to change no. of rows
import numpy as np
import pandas as pd
import plotly.express as px
df = {'date': pd.date_range(start='2021-01-01', periods=size, freq='D'),
'new_cases': np.random.random(size=size),
'new_cases_smoothed': np.random.random(size=size)}
df = pd.DataFrame(df)
fig = px.line(df, x='date', y=['new_cases','new_cases_smoothed'])
fig.update_layout(xaxis=dict(rangeslider=dict(visible=True),type="date"))
fig.show()
Run Code Online (Sandbox Code Playgroud) python customization data-visualization plotly plotly-python
我有一个名为的列表my_customdata,其中包含一些nan值。当我绘制森伯斯特图表并将我的列表传递给 时customdata,它会根据需要显示值。但是对于这些nan值,它会显示0(如果我将 si 前缀设置与 customdata 一起传递)或者null如果我没有传递自定义 si 前缀格式。仅当nan列表中有 a 时,我才想隐藏悬停标签中的数据。有可能这样做吗?
import pandas as pd
import plotly.express as px
import numpy as np
data = {
'ids':['SA', 'NA', 'Brazil', 'Uruguay', 'USA', 'Canada', 'PFV Brazil', 'PV Brazil', 'PFV Uruguay', 'PV Uruguay', 'PFV USA', 'PV USA', 'PFV Canada', 'PV Canada'],
'labels': ['SA', 'NA', 'Brazil', 'Uruguay', 'USA', 'Canada', 'PFV', 'PV', 'PFV', 'PV', 'PFV', 'PV', 'PFV', 'PV'],
'parent': ['', '', 'SA', …Run Code Online (Sandbox Code Playgroud) import pandas as pd
from pandas import Timestamp
import plotly.express as px
df = pd.DataFrame({'continent': {127: 'South America',
128: 'South America',
129: 'South America',
130: 'South America',
131: 'South America'},
'date': {127: Timestamp('2021-03-01 00:00:00'),
128: Timestamp('2021-03-26 00:00:00'),
129: Timestamp('2021-04-20 00:00:00'),
130: Timestamp('2021-05-15 00:00:00'),
131: Timestamp('2021-06-09 00:00:00')},
'total_cases': {127: 20465329.0,
128: 23470911.0,
129: 26544779.0,
130: 29891133.0,
131: 30534015.0}})
fig = px.bar(df, x='continent', y='total_cases', animation_frame=df.date.astype(str),
# hover_data={'animation_frame':False,
# 'continent':False,
# }
)
fig.update_traces(hovertemplate='Date:%{animation_frame}<br>Total Cases:%{y}')
Run Code Online (Sandbox Code Playgroud)
运行上述代码会输出带有动画滑块的条形图。仅当您不移动滑块时,对悬停标签所做的更改才可见。一旦你这样做并且框架发生变化,默认的plotly.express悬停标签就会重新出现(我认为是因为跟踪更新了)。有什么解决办法吗?
编辑:添加 GIF 来显示问题