我在R中使用附加的图像功能.我更喜欢使用它作为速度的热图,因为我将它用于巨大的矩阵(~400000乘400).
我的功能中的问题是调色板的动态范围,在我的情况下它只有蓝色和黄色.我已尝试对colorramp行进行了几处更改,但没有一个给我所需的输出.
我试过的最后一个颜色渐变选项是在R中使用一个名为ColorRamps的漂亮包,它给出了合理的结果:
library("colorRamps")
ColorRamp = blue2green2red(400)
ColorLevels <- seq(min, max, length=length(ColorRamp))
Run Code Online (Sandbox Code Playgroud)
但是,仍然没有matlab颜色渐变选项那么灵活.
我不太熟悉如何使它看起来更好并且具有更大的范围,例如附在照片中.
请告诉我是否可以更改我的图像功能以使我的图像看起来像照片中的图像.
我用于绘制图像的R函数,速度为rast = TRUE,如下所示:
# ----- Define a function for plotting a matrix ----- #
myImagePlot <- function(x, filename, ...){
dev = "pdf"
#filename = '/home/unix/dfernand/test.pdf'
if(dev == "pdf") { pdf(filename, version = "1.4") } else{}
min <- min(x)
max <- max(x)
yLabels <- rownames(x)
xLabels <- colnames(x)
title <-c()
# check for additional function arguments
if( length(list(...)) ){
Lst <- list(...)
if( !is.null(Lst$zlim) …Run Code Online (Sandbox Code Playgroud) 我有一个具有非常特定结构的列表列表,它看起来如下所示:
lol = [['geo','DS_11',45.3,90.1,10.2],['geo','DS_12',5.3,0.1,0.2],['mao','DS_14',12.3,90.1,1],...]
Run Code Online (Sandbox Code Playgroud)
我想将这个lol(列表列表)转换为以下形式的字典(请注意,lol中每个列表的第二个元素应该是唯一的,因此是我的dict的一个好键:
dict_lol = {'DS_11': ['geo','DS_11',45.3,90.1,10.2], 'DS_12':['geo','DS_12',5.3,0.1,0.2], 'DS_14':['mao','DS_14',12.3,90.1,1],...}
Run Code Online (Sandbox Code Playgroud)
我可以做一个for循环,但我正在寻找一种更优雅的pythonic方式来做到这一点.
谢谢!
我们说我有以下数据帧:
import pandas as pd
df = pd.DataFrame(data={'Status' : ['green','green','red','blue','red','yellow','black'],
'Group' : ['A','A','B','C','A','B','C'],
'City' : ['Toronto','Montreal','Vancouver','Toronto','Edmonton','Winnipeg','Windsor'],
'Sales' : [13,6,16,8,4,3,1]})
df.drop('Status',axis=1,inplace=True)
ndf = pd.pivot_table(df,values=['Sales'],index=['City'],columns=['Group'],fill_value=0,margins=False)
Run Code Online (Sandbox Code Playgroud)
结果如下:
In [321]: ndf
Out[321]:
Sales
Group A B C
City
Edmonton 4 0 0
Montreal 6 0 0
Toronto 13 0 8
Vancouver 0 16 0
Windsor 0 0 1
Winnipeg 0 3 0
Run Code Online (Sandbox Code Playgroud)
如何将其展平以使其成为单级数据框但是使用指定组的列?
即,结果应该是:
City group sales
Edmonton A 4
Edmonton B 0
Edmonton C 0
Montreal A 6
Montreal B 0
Montreal C …Run Code Online (Sandbox Code Playgroud) 如果我有一个具有未知列数的文件,但我知道我希望列X直到最后,是否有一种简单的方法来使用cut?
我们说X = 5,
我用过,
cut -f5- filename
但没用.
然后我试图指定-d'\ t'并且它也不起作用.
不确定我做错了什么.
任何帮助将不胜感激.
谢谢!
我有一个宽度矢量,
ws = c(1,1,2,1,3,1)
Run Code Online (Sandbox Code Playgroud)
从这个向量我想有另一个这种形式的向量:
indexes = c(1,2,3,5,6,7,9,11,12)
Run Code Online (Sandbox Code Playgroud)
为了创建这样的向量,我在R中做了以下循环:
ws = c(1,1,2,1,3,1)
indexes = rep(0, sum(ws))
counter = 1
counter2 = 1
last = 0
for(i in 1:length(ws))
{
if (ws[i] == 1)
{
indexes[counter] = counter2
counter = counter + 1
} else {
for(j in 1:ws[i])
{
indexes[counter] = counter2
counter = counter + 1
counter2 = counter2+2
}
counter2 = counter2 - 2
}
counter2 = counter2+1
}
Run Code Online (Sandbox Code Playgroud)
逻辑如下,ws中的每个元素指定索引中相应的元素数.例如,如果ws为1,则索引中元素的相应数量为1,但如果ws> 1,则假设为3,index中元素的相应数量为3,并且元素将被逐个跳过,对应3,5,7.
但是,我想避免for循环,因为它们在R中往往很慢.你对如何仅通过向量运算实现这样的结果有任何建议吗?还是一些更奇特的解决方案?
谢谢!
我有一个整数列表,我想写一个函数,返回一个范围内的数字子集.像NumbersWithinRange(列表,间隔)函数名称...
也就是说,
list = [4,2,1,7,9,4,3,6,8,97,7,65,3,2,2,78,23,1,3,4,5,67,8,100]
interval = [4,20]
results = NumbersWithinRange(list, interval) # [4,4,6,8,7,8]
Run Code Online (Sandbox Code Playgroud)
也许我忘了在结果中再写一个数字,但这就是想法......
该列表可以长达10/20百万,范围通常为几百.
关于如何使用python高效地完成任何建议 - 我正在考虑使用bisect.
谢谢.
假设我有两个相对较大的制表符分隔文件file1.txt,file2.txt.
file1.txt
id\tcity\tcar\ttype\tmodel
file2.txt
id\tname\trating
Run Code Online (Sandbox Code Playgroud)
我们假设file1.txt有2000个唯一ID,因此有2000个唯一行,而file2.txt只有1000个唯一行,因此有1000个唯一ID.有没有办法合并这两个表?
情况1.通过file1.txt中的id合并它们,其中当file2.txt中没有id时,将填写NAs.
案例2.在file2.txt中通过id合并它们,其中只有file2.txt中的id将打印出file1.txt和file2.txt中的字段.
注意:合并的新文件也应该是制表符分隔的文件,也带有头文件.笔记2.我也很欣赏在没有标题的情况下如何做到这一点的建议.
谢谢!
让我们说我有一个名为test.xlsx的excel文件,它是一个有三张工作簿,其中sheet1被称为hello1,sheet2被称为hello2,而sheet3被称为bye.
现在,我想读取该文件,然后重新编写相同的文件,但只更改名为hello2的工作表(第B列,第11行)和名为bye的工作表(第D列,第14行)中的值.我想要给出的值分别是'test'(一个字符串)和135(即,在工作表hello2中写入测试,在工作表中再写入14).
您可能想知道我为什么要问这样奇怪的问题,但基本上我希望获得以下一些技能/知识:
注意:作为参考,我可以在redhat服务器中使用任何版本的python,excel文件是用我的mac生成的,使用excel for mac 2011保存为xlsx格式.版本14.0.1,然后我将excel文件复制到redhat服务器.
我想使用 ggplot 绘制以下图:

这是我的 df 结构的一个例子(有点,不按数据比例绘制):
example.df = data.frame(mean = c(0.3,0.8,0.4,0.65,0.28,0.91,0.35,0.61,0.32,0.94,0.1,0.9,0.13,0.85,0.7,1.3),
std.dev = c(0.01,0.03,0.023,0.031,0.01,0.012,0.015,0.021,0.21,0.13,0.023,0.051,0.07,0.012,0.025,0.058),
class = c("1","2","1","2","1","2","1","2","1","2","1","2","1","2","1","2"),
group = c("group1","group2","group1","group2","group1","group2","group1","group2","group1","group2","group1","group2","group1","group2","group1","group2"))
Run Code Online (Sandbox Code Playgroud)
该数据框由 16 个重复组成,每个重复具有给定的平均值和给定的标准偏差。
对于每个重复,我想绘制置信区间,图中示例中的大点是平均估计值,条形的长度是标准偏差的两倍。
另外,我想在同一行中绘制两个不同的副本,但颜色不同,按类别着色,红色是 1 类,蓝色是 2 类。
最后,我想将整个情节划分为对应于两个不同组的两个面板(在同一行中)。
我试着查看这个网站,http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/,但无法弄清楚如何为这个结构的任何数据框自动化这个,有 X 个组(在本例中为 2),并且每组 K 次重复(在本例中为 8、4 个第 1 类和第 4 个第 2 类)。
有没有使用 ggplot 或标准 r pkg 库来做到这一点的好方法?
是否有一个unix one liner来做这件事?
head -n 3 test.txt > out_dir/test.head.txt
grep hello test.txt > out_dir/test.tmp.txt
cat out_dir/test.head.txt out_dir/test.tmp.txt > out_dir/test.hello.txt
rm out_dir/test.head.txt out_dir/test.tmp.txt
Run Code Online (Sandbox Code Playgroud)
即,我想同时从给定文件中获取标题和一些grep行.