在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文件?
是否有可能将一个大图例分成多个(通常是 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)
我想将图例分成两部分并将它们放置在可用空白的位置。
在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)

我明白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)
我错过了什么?
更新 …
我有一组名字,姓氏是大写的,中间名和中间名是正常的,例如
OBAMA Barack
DEL MONTE Alfredo
Run Code Online (Sandbox Code Playgroud)
我想将它们分开
"OBAMA", "Barack"
"DEL MONTE", "Alfredo"
Run Code Online (Sandbox Code Playgroud)
什么是pythonic方法来实现这一目标?
我有两个文件,我想在它们之间执行一些逐行操作(逐个).我现在使用两个循环来实现这一目标.有没有办法在单个循环中执行它(在python 2.7中):
for fileName in [fileNam1,fileName2]:
for line in open(fileName):
do something
Run Code Online (Sandbox Code Playgroud) 我想更新旧的列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) 如何获得两个日期之间特定月份和工作日的数量.
如果日期是
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) 我有一个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)