我正在创建一个dash应用程序,这是我的代码:
# import required packages
import dash
import dash_table
import dash_core_components as dcc
import dash_html_components as html
import dash_bootstrap_components as dbc
import plotly.graph_objs as go
import numpy as np
import pandas as pd
# define figure creation function
def create_figure():
N = 100
x_min = 0
x_max = 10
y_min = 0
y_max = 10
blue = '#6683f3'
orange = '#ff9266'
grey = '#e0e1f5'
black = '#212121'
x = np.linspace(x_min, x_max, N)
y = np.linspace(y_min, y_max, N)
XX, …Run Code Online (Sandbox Code Playgroud) 我有一个 Python 文件,其中有很多行,如下所示:
\ndf[\'A\'] = df.T + df.N / df.R\nRun Code Online (Sandbox Code Playgroud)\n我想用 替换每次df.something出现的情况df[\'something\'],因此上面的行变为:
df[\'A\'] = df[\'T\'] + df[\'N\'] / df[\'R\']\nRun Code Online (Sandbox Code Playgroud)\nCtrl我使用+激活替换功能R,然后勾选该Reg\xcc\xb2ex选项,并通过搜索 成功突出显示每个出现的情况df.[A-Z],[A-Z]代表每个T、等,因为它是占位符N。\n我不知道如何在“替换为”框中使用相同的占位符,因此不知道要写什么:如果我重用(下图)作为占位符并写入,我会得到以下结果:R[A-Z]df.[\'[A-Z]\']
df[\'A\'] = df[\'[A-Z]\'] + df[\'[A-Z]\'] / df[\'[A-Z]\']\nRun Code Online (Sandbox Code Playgroud)\n\n我应该在底部框中写什么作为占位符?
\n我运行了多重回归并将系数和标准误差存储到数据框中,如下所示:
我想制作一个图表来显示每个组的系数如何随时间变化,如下所示:
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(14,8))
sns.set(style= "whitegrid")
sns.lineplot(x="time", y="coef",
hue="group",
data=eventstudy)
plt.axhline(y=0 , color='r', linestyle='--')
plt.legend(bbox_to_anchor=(1, 1), loc=2)
plt.show
plt.savefig('eventstudygraph.png')
Run Code Online (Sandbox Code Playgroud)
但我想包含使用主数据集中的“stderr”数据的错误栏。我想我可以使用“plt.errorbar”来做到这一点。但似乎无法弄清楚如何使其发挥作用。目前,我尝试添加 'plt.errorbar 行并尝试不同的迭代:
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(14,8))
sns.set(style= "whitegrid")
sns.lineplot(x="time", y="coef",
hue="group",
data=eventstudy)
plt.axhline(y=0 , color='r', linestyle='--')
plt.errorbar("time", "coef", xerr="stderr", data=eventstudy)
plt.legend(bbox_to_anchor=(1, 1), loc=2)
plt.show
plt.savefig('eventstudygraph.png')
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它似乎正在图表中创建自己的组/线。我想如果我只有一组,我会知道如何使用“plt.errorbar”,但我不知道如何让它适用于 3 个组。有没有某种方法可以制作 3 个版本的“plt.errorbar”,以便我可以分别为每个组创建误差线?或者有更简单的东西吗?
我正在尝试dash_bootstrap_components.Collapse在我的dash应用程序中实现 a ,但它的行为存在问题。这里的代码,我不是自己写的,我只是从dash_bootstrap_components.Collapse 文档中复制过来的:
import dash
import dash_bootstrap_components as dbc
import dash_html_components as html
from dash.dependencies import Input, Output, State
app = dash.Dash()
app.layout = html.Div([dbc.Button('Open collapse',
id = 'collapse-button',
className = 'mb-3',
color = 'primary'),
dbc.Collapse(dbc.Card(dbc.CardBody('This content is hidden in the collapse')),
id = 'collapse')])
@app.callback(Output('collapse', 'is_open'),
[Input('collapse-button', 'n_clicks')],
[State('collapse', 'is_open')])
def toggle_collapse(n, is_open):
if n:
return not is_open
return is_open
if __name__ == "__main__":
app.run_server()
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
当我点击按钮时,没有任何反应。
我试图找出问题出在哪里,我发现:
n在app.callback初始化为 …我有一个简单的数据框,看起来像这样(年份是日期时间索引列):
Year A B
2018-01-01 1.049400 1.034076
2017-01-01 1.056371 1.032066
2016-01-01 1.063413 1.030055
Run Code Online (Sandbox Code Playgroud)
我使用以下方式绘制数据图表:
df['A'].plot()
df['B'].plot()
并每 5 年获取带有日期刻度标签的图表。
如何使年份刻度每 2 年(或任何其他数量)出现一次?
使用时sns.pairplot我有这个:
import seaborn as sns
iris = sns.load_dataset("iris")
g = sns.pairplot(iris,
markers="+",
kind='reg',
diag_kind="kde",
plot_kws={'line_kws':{'color':'#aec6cf'},
'scatter_kws': {'alpha': 0.5,
'color': '#82ad32'}},
corner=True)
Run Code Online (Sandbox Code Playgroud)
没有 kde 颜色的配对图:
但我需要更改绘图的对角线颜色,但是当我尝试时diag_kws,出现以下错误:
import seaborn as sns
iris = sns.load_dataset("iris")
g = sns.pairplot(iris,
markers="+",
kind='reg',
diag_kind="kde",
plot_kws={'line_kws':{'color':'#aec6cf'},
'scatter_kws': {'alpha': 0.5,
'color': '#82ad32'},
'diag_kws': {'color': '#82ad32'}},
corner=True)
TypeError: regplot() got an unexpected keyword argument 'diag_kws'
Run Code Online (Sandbox Code Playgroud) 我试图使用 matplotlib 和 pandas 创建一个条形图,显示美国 COVID-19 病例的每日变化。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv')
display(data.head(10))
df = data.groupby('date').sum()
df['index'] = range(len(df))
df['IsChanged'] = df['cases'].diff()
df.at['2020-01-21', 'IsChanged'] = 0.0
x = df['index']
z = df['IsChanged']
plt.figure(figsize=(20,10))
plt.grid(linestyle='--')
plt.bar(x,z)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我得到的图表看起来像这样:
。
图表条形的宽度不均匀。我尝试设置特定的宽度,但这不起作用。有没有办法来解决这个问题?
我想为我的时间序列数据制作时间序列散点图,其中我的数据具有分类列,需要按组聚合以首先绘制数据,然后使用seaborn或制作散点图matplotlib。我的数据是产品销售价格时间序列数据,我想看到每个产品所有者在不同市场阈值下的价格趋势。我尝试使用pandas.pivot_table,groupby来塑造绘图数据,但无法获得我想要制作的所需绘图。
可重复数据:
这是我使用的示例产品数据;我想看到每个经销商关于不同蛋白质类型的价格趋势threshold。
我的尝试
这是我目前尝试汇总我的数据以制作绘图数据,但它没有给出我正确的绘图。我敢打赌,我聚合绘图数据的方式是不正确的。谁能指出我如何正确地获得所需的情节?
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sn
mydf = pd.read_csv('foo.csv')
mydf=mydf.drop(mydf.columns[0], axis=1)
mydf['expected_price'] = mydf['price']*76/mydf['threshold']
g = mydf.groupby(['dealer','protein_type'])
newdf= g.apply(lambda x: pd.Series([np.average(x['threshold'])])).unstack()
Run Code Online (Sandbox Code Playgroud)
但上述尝试不起作用,因为我想绘制每个经销商的市场购买价格在每日时间序列中protein_type不同threshold的数据。我不知道处理这个时间序列的最佳方式是什么。谁能建议我或纠正我如何做到这一点?
我也尝试pandas/pivot_table聚合我的数据,但它仍然不代表绘图数据。
pv_df= pd.pivot_table(mydf, index=['date'], columns=['dealer', 'protein_type', 'threshold'],values=['price'])
pv_df= pv_df.fillna(0)
pv_df.groupby(['dealer', 'protein_type', 'threshold'])['price'].unstack().reset_index()
Run Code Online (Sandbox Code Playgroud)
但上述尝试仍然无效。同样在我的数据中,日期不是连续的,所以我假设我可以绘制月度时间序列折线图。
我试图制作情节:
这是我制作情节的尝试:
def scatterplot(x_data, y_data, x_label, y_label, title):
fig, ax …Run Code Online (Sandbox Code Playgroud) 我想根据字典制作小提琴图。这是我的字典的示例,尽管我的实际字典有更多的患者和更多的值。
paired_patients={'Patient_1': {'n':[1, nan, 3, 4], 't': [5,6,7,8]},
'Patient_2': {'n':[9,10,11,12], 't':[14,nan,16,17]},
'Patient_3': {'n':[1.5,nan,3.5,4.5], 't':[5.5,6.5,7.5,8.5]}}
Run Code Online (Sandbox Code Playgroud)
对于每个患者,我希望有一组两个并排的小提琴图,一个'n'和一个用于't'. 我希望所有六个小提琴图都在同一个图上,共享 y 轴。
我正在尝试使用matplotlib violinplot,但我不确定如何在'dataset'选项中输入我的字典,也不知道如何按患者对'n'和进行分组't'。
任何帮助将不胜感激!
我正在尝试按字母顺序对文本文件的所有单词进行排序。这是我的代码:
filename=input('Write the name of the file :')
fh=open(filename)
wlist=list()
for line in fh:
line=line.rstrip()
ls=line.split()
for w in ls:
if w not in wlist:
wlist.append(w)
print(wlist)
Run Code Online (Sandbox Code Playgroud)
输出没问题,但每当我尝试时,print(wlist.sort())它都会给出“无”作为输出,而不是对 wlist 进行排序。我的代码有什么问题?
提前致谢。
python ×10
matplotlib ×6
seaborn ×4
pandas ×3
datetime ×2
plotly-dash ×2
callback ×1
collapse ×1
css ×1
dataframe ×1
dictionary ×1
graph ×1
html ×1
javascript ×1
layout ×1
list ×1
plot ×1
pycharm ×1
regex ×1
sorting ×1
violin-plot ×1