我正在尝试使用 python 中的plotly 创建一个条形图,它既是堆叠的又是分组的。
玩具示例(不同年份花费和赚取的钱):
import pandas as pd
import plotly.graph_objs as go
data = pd.DataFrame(
dict(
year=[2000,2010,2020],
var1=[10,20,15],
var2=[12,8,18],
var3=[10,17,13],
var4=[12,11,20],
)
)
fig = go.Figure(
data = [
go.Bar(x=data['year'], y=data['var1'], offsetgroup=0, name='spent on fruit'),
go.Bar(x=data['year'], y=data['var2'], offsetgroup=0, base=data['var1'], name='spent on toys'),
go.Bar(x=data['year'], y=data['var3'], offsetgroup=1, name='earned from stocks'),
go.Bar(x=data['year'], y=data['var4'], offsetgroup=1, base=data['var3'], name='earned from gambling'),
]
)
fig.show()
Run Code Online (Sandbox Code Playgroud)
结果一开始看起来不错:
但是看看当我关闭例如“花在水果上”时会发生什么:
“花在玩具上”的痕迹仍然是浮动的,而不是从 0 开始。
这个问题可以修复吗?或者也许整个offsetgroup
+base
方法在这里不起作用。但我还能做什么呢?
谢谢!
更新:根据此 Github 问题,正在为未来的绘图版本开发堆叠、分组条形图,因此这可能不再是问题。
我正在尝试使用该str.format()
方法,并且当我的值存储在元组中时遇到一些困难.例如,如果我这样做:
s = "x{}y{}z{}"
s.format(1,2,3)
Run Code Online (Sandbox Code Playgroud)
然后我明白了'x1y2z3'
- 没问题.
但是,当我尝试:
s = "x{}y{}z{}"
tup = (1,2,3)
s.format(tup)
Run Code Online (Sandbox Code Playgroud)
我明白了
IndexError: tuple index out of range.
Run Code Online (Sandbox Code Playgroud)
那么如何将元组转换为单独的变量呢?或任何其他解决方法的想法?
我试图用R绘制半圆.我的最终目的是绘制一个圆圈,在中间用颜色划分.我发现的唯一方法是绘制两个不同颜色的半圆.
所以我创建了自己的函数:
upper.half.circle <- function(x,y,r,nsteps=100,...){
rs <- seq(0,pi,len=nsteps)
xc <- x+r*cos(rs)
yc <- y+r*sin(rs)
polygon(xc,yc,...)
}
lower.half.circle <- function(x,y,r,nsteps=100,...){
rs <- seq(0,pi,len=nsteps)
xc <- x-r*cos(rs)
yc <- y-r*sin(rs)
polygon(xc,yc,...)
}
Run Code Online (Sandbox Code Playgroud)
但是,出于某种原因,我的半圈更像是半椭圆.例如,尝试运行:
plot(1, type="n",axes=F,xlab="", ylab="",xlim=c(0,200),ylim=c(0,200))
upper.half.circle(15,170,10,nsteps=1000,col='red')
Run Code Online (Sandbox Code Playgroud)
有谁知道我为什么遇到这个麻烦,或者知道一个更好的方法来做我想做的事情?
谢谢!
让我们举一个简单的例子:
import plotly.express as px
x = ['A', 'B']
y = [10, 20]
fig = px.bar(x=x, y=y, color=x)
fig.update_layout(autosize=False, width=300, height=300, showlegend=True)
fig.show()
Run Code Online (Sandbox Code Playgroud)
我将宽度和高度设置为相同的值,但得到的结果却截然不同。我知道这是因为轴刻度、标签和图例占用的空间。那么如何设置绘图区域的大小呢?假设我想要一个正方形图。我应该怎么办?
我尝试添加:
fig.update_yaxes(
scaleanchor = "x",
scaleratio = 1,
)
Run Code Online (Sandbox Code Playgroud)
但这并没有改变结果。有任何想法吗?
我有一个奇怪的问题,它来来去去,我真的不知道什么时候以及为什么。
我正在运行这样的蛇形管道:
conda activate $myEnv
snakemake -s $snakefile --configfile test.conf.yml --cluster "python $qsub_script" --latency-wait 60 --use-conda -p -j 10 --jobscript "$job_script"
Run Code Online (Sandbox Code Playgroud)
我在 conda 环境中安装了 snakemake 5.9.1(也尝试降级到 5.5.4)。
如果我只运行这个命令,这工作正常,但是当我将此命令 qsub 到我正在使用的 PBS 集群时,我收到一个错误。我的 qsub 脚本如下所示:
#PBS stuff...
source ~/.bashrc
hostname
conda activate PGC_de_novo
cd $workDir
snakefile="..."
qsub_script="pbs_qsub_snakemake_wrapper.py"
job_script="..."
snakemake -s $snakefile --configfile test.conf.yml --cluster "python $qsub_script" --latency-wait 60 --use-conda -p -j 10 --jobscript "$job_script" >out 2>err
Run Code Online (Sandbox Code Playgroud)
我得到的错误信息是:
...
Traceback (most recent call last):
File "/path/to/pbs_qsub_snakemake_wrapper.py", line 6, in <module>
from snakemake.utils …
Run Code Online (Sandbox Code Playgroud) 我有一个带有以下单元格的 Jupyter 笔记本:
from ipywidgets import widgets, interact
slider = widgets.IntSlider()
def print_val(v):
print(v)
interact(print_val,v=slider)
Run Code Online (Sandbox Code Playgroud)
这在笔记本中工作得很好 - 当我更改滑块时,打印输出会发生变化。但是当我使用nbconvert
将笔记本转换为 HTML 时,滑块在输出 HTML 中仍然呈现良好,但对打印输出没有影响。
知道如何让它发挥作用吗?也许 ipywidgets 不是适合此类内容的库?
谢谢!
我正在尝试使用 python 中的 Plotly 绘制累积直方图,但使其看起来像“步骤”,即没有颜色且仅显示顶线的条形图。像这样的东西:
基本上,我试图重现以下 matplotlib 代码的行为:
import matplotlib.pyplot as plt
plt.hist(x, cumulative=True, histtype='step')
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能做的最好的事情是:
import plotly.graph_objs as go
from plotly.offline import iplot
h = go.Histogram(x=x,
cumulative=dict(enabled=True),
marker=dict(color="rgba(0,0,0,0)",
line=dict(color="red", width=1)))
iplot([h])
Run Code Online (Sandbox Code Playgroud)
那么有什么技巧呢?
我有一个 Snakemake 工作流程,其中包含运行另一个“内部”snakemake 工作流程的规则。
有时内部工作流程的某个规则失败,就意味着内部工作流程失败。因此,output
内部工作流程下列出的所有文件都会被外部工作流程删除,即使创建这些文件的内部工作流程的规则成功完成也是如此。
有没有办法防止snakemake删除失败规则的输出?或者也许您可以建议另一种解决方法?
一些注意事项:
protected
,但这没有帮助。exit 0
到内部工作流程的调用末尾,以使 Snakemake 认为它已成功完成,像这样:
rule run_inner:
input:
inputs...
output:
outputs...
shell:
"""
snakemake -s inner.snakefile
exit 0
"""
Run Code Online (Sandbox Code Playgroud)
但输出仍然被删除。
将不胜感激任何帮助。谢谢!