小编str*_*tum的帖子

Python matplotlib另存为TIFF

有谁知道如何将matplotlib图保存为*.tiff?似乎Python不支持这种格式,而期刊经常要求这种格式.

我正在添加一些最小的代码:

# -*- coding: utf-8 -*-

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

# fig setup
fig = plt.figure(figsize=(5,5), dpi=300)
ax = fig.gca(projection='3d')
ax.set_xlim([-1,1])
ax.set_ylim([-1,1])
ax.set_zlim([-1,1])
ax.axes.xaxis.set_ticklabels([])
ax.axes.yaxis.set_ticklabels([])
ax.axes.zaxis.set_ticklabels([])

# draw a surface
xx, yy = np.meshgrid(range(-1,2), range(-1,2))
zz = np.zeros(shape=(3,3))
ax.plot_surface(xx, yy, zz, color='#c8c8c8', alpha=0.3)
ax.plot_surface(xx, zz, yy, color='#b6b6ff', alpha=0.2)

# draw a point
ax.scatter([0],[0],[0], color='b', s=200)
Run Code Online (Sandbox Code Playgroud)

这有效:

fig.savefig('3dPlot.pdf')
Run Code Online (Sandbox Code Playgroud)

但这不是:

fig.savefig('3dPlot.tif')
Run Code Online (Sandbox Code Playgroud)

python tiff matplotlib

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

R中的Bootstrap多项式回归

我试图在R中引导一个简单的多项式回归,我收到一个错误:

is.data.frame(data)出错:找不到对象'd'

真正奇怪的是我在Quick-R的启动包教程中使用相同的代码(调整到这个特定的问题),并且当我使用不同的函数(如lm())时,相同的代码也有效.当然,我做了一些愚蠢的事情,但我看不出是什么.如果有人可以提供帮助,我会非常感激.

这是一个例子:

require(foreign)
require(nnet)
require(boot)

# an example for multinomial logistic regression
ml = read.dta('http://www.ats.ucla.edu/stat/data/hsbdemo.dta')
ml = ml[,c(5,7,3)]

bs <- function(formula, data, indices) {
    d = data[indices,] # allows boot to select sample
    fit = multinom(formula, data=d)
    s = summary(fit)
    return(list(fit$coefficients, fit$standard.errors))
}

# 5 replications
results = list()
results <- boot(
    data=ml, statistic=bs, R=5, parallel='multicore',
    formula=prog~write
)
Run Code Online (Sandbox Code Playgroud)

bootstrapping r logistic-regression

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

如何在 R 中将 one-hot 编码变量转换为单个因子

在这篇文章中,他们讨论了如何在 R 中对单因子变量进行单热编码。我想知道如何扭转问题并从对某些属性进行单热编码的变量中获取单因子?

r one-hot-encoding

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

如何平滑R ggplot中的线条

我试图将观察到的值绘制为与预期值相对的点,如下所示:

d <- data.frame(
    ranks = 1:9,
    observed = c(0.736, 0.121, 0.067, 0.034, 0.026, 0.015, 0.001, 0.001, 0.000),
    expected = c(0.735, 0.136, 0.051, 0.025, 0.015, 0.009, 0.006, 0.005, 0.003)
)

ggplot(d, aes(x=ranks, y=observed)) +
  geom_point(size=2.2) +
  geom_line(aes(x=ranks, y=expected), size=0.8, colour='red')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是正确的,但我更希望线条很好地平滑(没有肘部)。使用geom_smooth()withloessgam并没有真正帮助,因为两者都过度平滑(以不同的方式)。有什么建议吗?

更新:如果这很有用,以下是我生成预期值的方式:

# BACIS POWER FUNCTION:
fPow <- function(x, a, b) {a * x^b}

# INITIALIZE PARAMETERS:
est1 <- coef(nls(observed ~ fPow(ranks, a, b),
    start=c(a=1, b=1), data=d))

# FITTING:
nlfit1 <- nls(observed ~ …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

使用Python中的元组或列表对dict进行排序

如何使用元组或列表对dict键进行排序而不是返回值?例如,我有一个词典:

d = {'a' : 1, 'b' : 3, 'c' : 5, d : '7'}
Run Code Online (Sandbox Code Playgroud)

和一个元组:

t = ('d', 'b', 'c', 'a')
Run Code Online (Sandbox Code Playgroud)

我想得到一个值列表,如:

[7, 3, 5, 1]
Run Code Online (Sandbox Code Playgroud)

非常感谢!

python dictionary tuples list

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

R Markdown中的图形大小

我试图谨慎而透彻地阅读网上的各种内容,以了解如何在R Markdown中格式化数字。它们已正确绘制,但似乎无法控制它们的大小。

首先,有一些基本知识,例如:

```{r Fig1, echo=FALSE, fig.height=5, fig.width=15}
    x1 = rnorm(100)
    x2 = runif(100)
    x3 = rbeta(100, 1, 1,)
    par(mfrow=c(1,3), mar=c(4,4,4,1), oma=c(0.5,0.5,0.5,0))
    qqnorm(x1)
    qqnorm(x2)
    qqnorm(x3)
```
Run Code Online (Sandbox Code Playgroud)

然后,我尝试使用:

```{r Fig1b, echo=FALSE, fig.height=5, fig.width=15, out.retina=1}

```
Run Code Online (Sandbox Code Playgroud)

而且,如果我尝试匹配另一个简单图形的大小,差异是显而易见的。例如:

```{r Fig2, echo=FALSE, fig.height=5, fig.width=5, retina=1}
    par(mfrow=c(1,1), mar=c(4,4,4,1), oma=c(0.5,0.5,0.5,0))
    qqnorm(x1)
```
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做-即如何使所有数字大小相等?特别是,如果像图1和图1b这样的图形缩小了,如何调整如图2所示的简单图形的大小?

谢谢!

r figure r-markdown

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

当一个变量(列)是不同长度的列表时,如何交叉制表 pandas 数据框

如何从以下数据帧生成交叉表:

import pandas as pd
dat = pd.read_csv('data.txt', sep=',')
dat.head(6)

  Factor1 Factor2
0       A       X
1       B       X
2       A     X|Y
3       B     X|Y
4       A   X|Y|Z
5       B   X|Y|Z

dat[['Factor2']] = dat[['Factor2']].applymap(lambda x : x.split('|'))
dat.head(6)

  Factor1    Factor2
0       A        [X]
1       B        [X]
2       A     [X, Y]
3       B     [X, Y]
4       A  [X, Y, Z]
5       B  [X, Y, Z]
Run Code Online (Sandbox Code Playgroud)

结果pd.crosstab()应该是这样的:

  X Y Z
A 3 2 1
B 3 2 1
Run Code Online (Sandbox Code Playgroud)

python crosstab pandas

3
推荐指数
2
解决办法
405
查看次数