小编ims*_*msc的帖子

减少matplotlib中pdf图形文件的大小

matplotlib,我正在使用LineCollection绘制和着色的国家,其中给出了县的边界.当我将数字保存为pdf文件时:

fig.savefig('filename.pdf',dpi=300)
Run Code Online (Sandbox Code Playgroud)

数字大小相当大.但是,将它们保存为png文件:

fig.savefig('filename.png',dpi=300)
Run Code Online (Sandbox Code Playgroud)

然后使用linux convert命令将它们转换为pdf 文件很小.我尝试减少dpi,但不会改变pdf文件大小.有没有办法将数字直接保存为来自matplotlib的较小pdf文件?

matplotlib dpi figure

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

在 matploblib 中分割图例

是否有可能将一个大图例分成多个(通常是 2 个)较小的图例。

from pylab import *

t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
plot(t, s, linewidth=1.0, label="Graph1")
grid(True)
s = sin(4*pi*t)
plot(t, s, color='r',linewidth=1.0, label="Graph2")

legend(loc='lower left')
show() 
Run Code Online (Sandbox Code Playgroud)

我想将图例分成两部分并将它们放置在可用空白的位置。

python matplotlib legend

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

如何在对数图中的n位选择刻度?

在matplotlib中,有时主要刻度在loglog图中彼此太接近.而不是手动设置它们,可以使用类似的东西MaxNLocator在对数刻度的n个位置放置刻度线吗?

import numpy as np
import pylab as p

x=np.logspace(1,20,10)

fig=p.figure()
ax1=fig.add_subplot(121)
ax1.loglog(x,x,'o')
ax2=fig.add_subplot(122)
ax2.loglog(x,x,'o')
fig.show()
Run Code Online (Sandbox Code Playgroud)

数字

python matplotlib

5
推荐指数
2
解决办法
2784
查看次数

为什么在从Map返回时会复制data.table

我明白data.table从函数返回时不会被复制.但是,在这种特殊情况下,它会被复制.可以解释一下原因吗?

dt1 <- data.table(a=1)
dt2 <- data.table(b=1)
dt3 <- data.table(c=1)

address(dt1); address(dt2); address(dt3)
[1] "000000005E20D990"
[1] "00000000052301E8"
[1] "000000001D622210"

l <- list(a=dt1, b=dt2, c=dt3)
address(l$a); address(l$b); address(l$c)
$[1] "000000005E20D990"
$[1] "00000000052301E8"
$[1] "000000001D622210"

f <- function(dt) {setnames(dt, toupper(names(dt)))}
l <- Map(f, l)
address(l$a); address(l$b); address(l$c)
$[1] "000000001945C7B0"
$[1] "0000000066858738"
$[1] "000000001B021038"

dt1
$   A
$1: 1
dt2
$   B
$1: 1
dt3
$   C
$1: 1
Run Code Online (Sandbox Code Playgroud)

所以这是制作副本的最后一行.但是,以下内容不进行复制.

address(dt1)
$[1] "000000005E20D990"
dt4 <- f(dt1)
address(dt4)
$[1] "000000005E20D990"
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

更新 …

r mapply data.table

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

用大写单词拆分一串单词

我有一组名字,姓氏是大写的,中间名和中间名是正常的,例如

OBAMA Barack
DEL MONTE Alfredo
Run Code Online (Sandbox Code Playgroud)

我想将它们分开

"OBAMA", "Barack"
"DEL MONTE", "Alfredo"
Run Code Online (Sandbox Code Playgroud)

什么是pythonic方法来实现这一目标?

python regex string

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

按顺序迭代两个文件中的行

我有两个文件,我想在它们之间执行一些逐行操作(逐个).我现在使用两个循环来实现这一目标.有没有办法在单个循环中执行它(在python 2.7中):

for fileName in [fileNam1,fileName2]:
    for line in open(fileName):
        do something
Run Code Online (Sandbox Code Playgroud)

python

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

根据另一个数据表更新data.table

我想更新旧的列data.table基于一个新的data.table,只有当值不NA.

DT_old = data.table(x=rep(c("a","b","c")), y=c(1,3,6), v=1:3, l=c(1,1,1))
DT_old
   x y v l
1: a 1 1 1
2: b 3 2 1
3: c 6 3 1
DT_new = data.table(x=rep(c("b","c",'d')), y=c(9,6,10), v=c(2,NA,10), z=c(9,9,9))
DT_new
   x  y  v z
1: b  9  2 9
2: c  6  NA 9
3: d 10 10 9
Run Code Online (Sandbox Code Playgroud)

我想要输出

   x  y  v z
1: b  9  2 9
2: c  6  3 9
3: d 10 10 9
4: a 1 …
Run Code Online (Sandbox Code Playgroud)

merge r data.table

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

两个日期之间特定月份/工作日的数量

如何获得两个日期之间特定月份和工作日的数量.

如果日期是

datetime.datetime(2004, 01, 01)
datetime.datetime(2005, 10, 01)
Run Code Online (Sandbox Code Playgroud)

我希望我的输出为

{'January':2, 'February':2, ..., 'December':1}
{'Monday':xx, ..., 'Sunday':xx}
Run Code Online (Sandbox Code Playgroud)

python time datetime

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

如果行中有NA,则挤压data.table

我有一个data.table很多NAs.我想挤压data.table它,以便它可以以紧凑的方式表示

dt <- data.table(id=1:5, c('x',NA,'y',NA,'y'), c(NA,NA,NA,NA,'z'), c('y','z','y','x',NA))
dt
>   id V2 V3 V4
>1:  1  x NA  y
>2:  2 NA NA  z
>3:  3  y NA  y
>4:  4 NA NA  x
>5:  5  y  z NA
Run Code Online (Sandbox Code Playgroud)

我正在寻找的输出是

dt
>   id V2 V3
>1:  1  x y
>2:  2  z NA
>3:  3  y y
>4:  4  x NA
>5:  5  y  z
Run Code Online (Sandbox Code Playgroud)

r data.table

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

标签 统计

python ×5

data.table ×3

matplotlib ×3

r ×3

datetime ×1

dpi ×1

figure ×1

legend ×1

mapply ×1

merge ×1

regex ×1

string ×1

time ×1