假设我有以下脚本为我绘制图表:
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)
不幸的是,这个人物在脚本结束后就关闭了。
如何预防呢?
更新
如果这个人物不可能在剧本中幸存下来,那么原因是什么?人物和剧本之间有什么联系?
对于这个问题的糟糕措辞,我感到很遗憾,但这是我能做的最好的事情.我确切地知道我想要什么,但不知道如何要求它.
以下是一个示例演示的逻辑:
采用值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) 我遇到了一个看似简单的问题:在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都是唯一的!
导入具有两列的 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)
错误:
问题:
我正在尝试掌握猴子修补的概念,同时创建一个函数来生成完美的时间序列图.如何在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()没有内置的论据.最接近的似乎是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) 挑战:
您如何更改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')也能让我以某种方式改变颜色,而不仅仅是width和height:
片段/单元格 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 文档 …
我试图通过 plotly 在 python 中绘制两个不同的图表。我有两个图,一个图由合并图(折线图和条形图)组成,如下所示,
另一个是条形图,如下所示,
我想用这两个组合图表显示一个图表并显示相同的图表。我已经试过这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) 我的数据框看起来与此类似:
>>>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'
Run Code Online (Sandbox Code Playgroud)The 'x' property is an array that may be specified …
代码:
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) Plotly Express 有一种直观的方式,可以用最少的代码行提供预先格式化的绘图;有点像 Seaborn 如何为 matplotlib 做到这一点。
可以在 Plotly 上添加图迹以在现有线图上获得散点图。但是,我在 Plotly Express 中找不到这样的功能。
是否可以在 Plotly Express 中组合散点图和折线图?