小编Zep*_*hyr的帖子

Plotly Dash 应用程序中的布局管理:如何定位 html div?

我正在创建一个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)

html css python layout plotly-dash

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

如何在 PyCharm 替换函数中使用正则表达式占位符

我有一个 Python 文件,其中有很多行,如下所示:

\n
df[\'A\'] = df.T + df.N / df.R\n
Run Code Online (Sandbox Code Playgroud)\n

我想用 替换每次df.something出现的情况df[\'something\'],因此上面的行变为:

\n
df[\'A\'] = df[\'T\'] + df[\'N\'] / df[\'R\']\n
Run Code Online (Sandbox Code Playgroud)\n

Ctrl我使用+激活替换功能R,然后勾选该Reg\xcc\xb2ex选项,并通过搜索 成功突出显示每个出现的情况df.[A-Z][A-Z]代表每个T、等,因为它是占位符N。\n我不知道如何在“替换为”框中使用相同的占位符,因此不知道要写什么:如果我重用(下图)作为占位符并写入,我会得到以下结果:R
[A-Z]df.[\'[A-Z]\']

\n
df[\'A\'] = df[\'[A-Z]\'] + df[\'[A-Z]\'] / df[\'[A-Z]\']\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

我应该在底部框中写什么作为占位符?

\n

python regex pycharm

3
推荐指数
1
解决办法
1138
查看次数

如何在 matplotlib 中为数据帧中的多个组添加误差线?

我运行了多重回归并将系数和标准误差存储到数据框中,如下所示:

数据框

我想制作一个图表来显示每个组的系数如何随时间变化,如下所示:

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”,以便我可以分别为每个组创建误差线?或者有更简单的东西吗?

python graph matplotlib seaborn

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

Plotly Dash:dash_bootstrap_components.Collapse 不折叠

我正在尝试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)

这就是我得到的:

在此处输入图片说明

当我点击按钮时,没有任何反应。
我试图找出问题出在哪里,我发现:

  • napp.callback初始化为 …

javascript python callback collapse plotly-dash

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

Matplotlib x 轴日期刻度频率

我有一个简单的数据框,看起来像这样(年份是日期时间索引列):

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 年(或任何其他数量)出现一次?

python datetime matplotlib dataframe pandas

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

更改seabornpairplot对角线颜色

使用时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)

python plot visualization matplotlib seaborn

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

matplotlib条形图中的条形宽度不一样?

我试图使用 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)

我得到的图表看起来像这样:

图表条形的宽度不均匀。我尝试设置特定的宽度,但这不起作用。有没有办法来解决这个问题?

python matplotlib pandas

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

有什么方法可以正确聚合时间序列数据以使用 matplotlib/seaborn 制作散点图?

我想为我的时间序列数据制作时间序列散点图,其中我的数据具有分类列,需要按组聚合以首先绘制数据,然后使用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)

python datetime matplotlib pandas seaborn

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

如何从字典中制作分组的小提琴图?

我想根据字典制作小提琴图。这是我的字典的示例,尽管我的实际字典有更多的患者和更多的值。

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'

任何帮助将不胜感激!

python dictionary matplotlib seaborn violin-plot

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

在列表中对文件的单词进行排序

我正在尝试按字母顺序对文本文件的所有单词进行排序。这是我的代码:

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 sorting list

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