小编ves*_*and的帖子

如何在脚本结束后保持 matplotlib 图打开?

假设我有以下脚本为我绘制图表:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

img = mpimg.imread('stinkbug.png')
#circle = plt.Circle((0, 0), radius=0.5, fc='y')
circle = plt.Circle((0, 0), radius=100, fill=False, color='b')

fig, ax = plt.subplots()
ax.imshow(img)
ax.add_artist(circle)
fig.show()
pass
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个人物在脚本结束后就关闭了。

如何预防呢?

更新

如果这个人物不可能在剧本中幸存下来,那么原因是什么?人物和剧本之间有什么联系?

python matplotlib

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

如何对使用其自身输出的滞后值的函数进行矢量化?

对于这个问题的糟糕措辞,我感到很遗憾,但这是我能做的最好的事情.我确切地知道我想要什么,但不知道如何要求它.

以下是一个示例演示的逻辑:

采用值1或0的两个条件触发一个也取值为1或0的信号.条件A触发信号(如果A = 1则信号= 1,否则信号= 0)无论如何.条件B不触发信号,但是如果条件B在条件A先前已经触发信号之后保持等于1,则信号保持触发.仅在A和B都返回到0之后,信号才返回到0.

1.输入:

在此输入图像描述

2.期望的输出(signal_d)并确认for循环可以解决它(signal_l):

在此输入图像描述

3.我尝试使用numpy.where():

在此输入图像描述

4.可重复的代码片段:

    # Settings
    import numpy as np
    import pandas as pd
    import datetime

    # Data frame with input and desired output i column signal_d
    df = pd.DataFrame({'condition_A':list('00001100000110'),
                       'condition_B':list('01110011111000'),
                       'signal_d':list('00001111111110')})

    colnames = list(df)
    df[colnames] = df[colnames].apply(pd.to_numeric)
    datelist = pd.date_range(pd.datetime.today().strftime('%Y-%m-%d'), periods=14).tolist()
    df['dates'] = datelist
    df = df.set_index(['dates']) 

    # Solution using a for loop with nested ifs in column signal_l
    df['signal_l'] = df['condition_A'].copy(deep = True)
    i=0
    for observations in df['signal_l']:
        if df.ix[i,'condition_A'] …
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization ipython pandas

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

如何删除pandas数据帧中的唯一行?

我遇到了一个看似简单的问题:在pandas数据帧中删除唯一的行.基本上,相反drop_duplicates().

让我们说这是我的数据:

    A       B   C  
0   foo     0   A
1   foo     1   A
2   foo     1   B
3   bar     1   A
Run Code Online (Sandbox Code Playgroud)

当A和B是唯一的时候我想删除行,即我只想保留第1行和第2行.

我尝试了以下方法:

# Load Dataframe
df = pd.DataFrame({"A":["foo", "foo", "foo", "bar"], "B":[0,1,1,1], "C":["A","A","B","A"]})

uniques = df[['A', 'B']].drop_duplicates()
duplicates = df[~df.index.isin(uniques.index)]
Run Code Online (Sandbox Code Playgroud)

但我只得到第2行,因为0,1和3都是唯一的!

python dataframe pandas

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

Power BI 中的 Python 脚本将日期返回为 Microsoft.OleDb.Date

导入具有两列的 csv 文件[Date, Value]并使用 对其进行转换后Home > Edit Queries > Transform > Run Python Script,该Date列将显示Microsoft.OleDb.Date而不是日期。在运行脚本之前,同一列中的相同值显示为12.10.2018(来自 csv 的输入格式为2018-10-12)。这会导致任何后续步骤Query Settings中断。你如何解决这个问题?

样本数据:

Date,Value
2108-10-12,1
2108-10-13,2
2108-10-14,3
2108-10-15,4
2108-10-16,5
Run Code Online (Sandbox Code Playgroud)

代码示例:

# 'dataset' holds the input data for this script
dataset['Value2'] = dataset['Value']*10
dataset
Run Code Online (Sandbox Code Playgroud)

错误:

在此处输入图片说明

python powerbi

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

猴子修补pandas和matplotlib去除df.plot()的刺

问题:

我正在尝试掌握猴子修补的概念,同时创建一个函数来生成完美的时间序列图.如何在pandas pandas.DataFrame.plot()中包含以下matplotlib功能?

ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
Run Code Online (Sandbox Code Playgroud)

complete code at the end of the question


细节:


我认为默认设置df.plot()非常简洁,特别是如果你正在运行一个黑暗主题的Jupyter笔记本,比如来自dunovank的chesterish:

df.plot默认

我想尽可能多地使用它来处理我的数据分析工作流程,但我真的想要删除框架(或者所谓的刺)这样:

df.plot没有帧

可以说,这是一个完美的时间序列图.但是df.plot()没有内置的论据.最接近的似乎是grid = False,但这会在同一次运行中夺走整个网格:

在此输入图像描述


我试过的


我知道我可以将spine片段包装在一个函数中,df.plot()所以我最终得到了这个:

小片1:

def plotPerfect(df, spline):

    ax = df.plot()

    if not spline:
        ax.spines['top'].set_visible(False)
        ax.spines['right'].set_visible(False)
        ax.spines['bottom'].set_visible(False)
        ax.spines['left'].set_visible(False)

    return(ax)

plotPerfect(df = df, spline = False)
Run Code Online (Sandbox Code Playgroud)

输出1:

在此输入图像描述

但就未来修正的灵活性和可读性而言,这是"最好的"方式吗?如果我们谈论数百个情节,甚至是关于执行时间最快的?

我知道如何获得df.plot() 消息来源,但是那里的一切让我感到困惑.那么,如何我包括这些设置df.plot?也许包裹的函数方法和猴子修补一样好?


包含完整代码和示例数据的代码段:


要重现100%的示例,请将其粘贴到Jupyter Notebook单元格中并chesterish theme激活:

# imports
import pandas as …
Run Code Online (Sandbox Code Playgroud)

python monkeypatching matplotlib pandas

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

Jupyter:如何更改 SelectMultiple() 等小部件的颜色?

挑战:

您如何更改widgets.SelectMultiple()和其他小部件的背景、字体等颜色?这是一个简单的设置widgets.SelectMultiple()

片段/单元格 1:

# settings
%matplotlib inline

# imports
from ipywidgets import interactive, Layout
from IPython.display import clear_output
import ipywidgets as widgets
from IPython.display import display

# widget 1
wdg = widgets.SelectMultiple(
    options=['Apples', 'Oranges', 'Pears'],
    value=['Oranges'],
    #rows=10,
    description='Fruits',
    disabled=False
)

display(wdg)
Run Code Online (Sandbox Code Playgroud)

小部件 1:

在此处输入图片说明

我试过的:

我以为我对布局样式感兴趣,并希望以下设置layout=Layout(width='75%', height='80px')也能让我以某种方式改变颜色,而不仅仅是widthheight

片段/单元格 2:

wdg2 = widgets.SelectMultiple(
    options=['Apples', 'Oranges', 'Pears'],
    value=['Oranges'],
    description='Fruits',
    layout=Layout(width='75%', height='80px'),
    disabled=False
)

display(wdg2)
Run Code Online (Sandbox Code Playgroud)

小部件2:

在此处输入图片说明

但令我非常失望的是,您似乎无法以类似的方式改变颜色。根据ipywidgets 文档 …

python widget ipython jupyter jupyter-notebook

7
推荐指数
2
解决办法
6514
查看次数

Plotly:如何绘制条形图和折线图以及条形图作为子图?

我试图通过 plotly 在 python 中绘制两个不同的图表。我有两个图,一个图由合并图(折线图和条形图)组成,如下所示,

Line_Bar_Chart,

另一个是条形图,如下所示,

条形图

我想用这两个组合图表显示一个图表并显示相同的图表。我已经试过这plotly通过make_subplots但我不能够正确地达到的结果。下面是创建这两个图表的代码,

Line_Bar_chart 代码

import plotly.graph_objects as go
from plotly.offline import iplot

trace1  = go.Scatter(
        mode='lines+markers',
        x = df['Days'],
        y = df['Perc_Cases'],
        name="Percentage Cases",
        marker_color='crimson'
    )

trace2 = go.Bar(
        x = df['Days'],
        y = df['Count_Cases'],
        name="Absolute_cases",
        yaxis='y2',
        marker_color ='green',
        marker_line_width=1.5,
        marker_line_color='rgb(8,48,107)',
        opacity=0.5
    )

data = [trace1, trace2]

layout = go.Layout(
    title_text='States_Name',
    yaxis=dict(
        range = [0, 100],
        side = 'right'
    ),
    yaxis2=dict(
        overlaying='y',
        anchor='y3',
    )
)
fig = go.Figure(data=data, layout=layout) …
Run Code Online (Sandbox Code Playgroud)

python pandas plotly

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

Plotly:如何使用 px.line 更改线条样式?

我的数据框看起来与此类似:

>>>Hour    Level   value   
0  7        H      1.435
1  7        M      3.124
2  7        L      5.578
3  8        H      0.435
4  8        M      2.124
5  8        L      4.578
Run Code Online (Sandbox Code Playgroud)

我想在绘图中创建折线图,该折线图将根据“级别”列具有不同的线条样式。

现在我有默认线条样式的折线图:

import plotly.graph_objects as go
fig = px.line(group, x="Hour", y="value",color='level', title='Graph',category_orders={'level':['H','M','L']}
             ,color_discrete_map={'H':'royalblue','M':'orange','L':'firebrick'})

fig.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想控制每个级别的线条样式。直到知道我看到做到这一点的唯一方法是为每个“级别”添加,但使用 add_trace 如下:

# Create and style traces
fig.add_trace(go.Scatter(x="Hour", y="value", name='H',
                         line=dict(dash='dash')))
fig.add_trace(go.Scatter(x="Hour", y="value", name = 'M',
                         line=dict(dash='dot')))
fig.show()
Run Code Online (Sandbox Code Playgroud)

但我不断收到此错误:

ValueError:为 scatter 的 'x' 属性收到的类型 'builtins.str' 的值无效 收到的值:'Hour'

The 'x' property is an array that may be specified …
Run Code Online (Sandbox Code Playgroud)

python linechart linestyle plotly plotly-python

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

Plotly:如何向烛台图表添加交易量?

代码:

from plotly.offline import init_notebook_mode, iplot, iplot_mpl
    
def plot_train_test(train, test, date_split):
    data = [Candlestick(x=train.index, open=train['open'], high=train['high'], low=train['low'], close=train['close'],name='train'),
           Candlestick(x=test.index, open=test['open'], high=test['high'], low=test['low'], close=test['close'],name='test')
            ]
            layout = {
                'shapes': [
                    {'x0': date_split, 'x1': date_split, 'y0': 0, 'y1': 1, 'xref': 'x', 'yref': 'paper',
                     'line': {'color': 'rgb(0,0,0)', 'width': 1}}],
                'annotations': [{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'left','text': ' test data'},
                    {'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'right', 'text': 'train data '}] }
            figure …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib plotly

7
推荐指数
2
解决办法
5751
查看次数

Plotly:如何使用 Plotly Express 组合散点图和线图?

Plotly Express 有一种直观的方式,可以用最少的代码行提供预先格式化的绘图;有点像 Seaborn 如何为 matplotlib 做到这一点。

可以在 Plotly 上添加图迹以在现有线图上获得散点图。但是,我在 Plotly Express 中找不到这样的功能。

是否可以在 Plotly Express 中组合散点图和折线图?

python plotly plotly-python plotly-express

7
推荐指数
2
解决办法
3596
查看次数