我创建了一个简短的脚本来在Tkinter画布元素中显示照片.我将canvas元素的大小设置为与照片大小相同,但是当我启动窗口时,无论我多大程度地展开窗口,我通常只会看到图像的一小部分.
另外,当我打印出用于设置画布大小的图像大小时,这个大小表示(922,614),而当我在画布上记录鼠标点击时,右下角就是某个东西像(500,300).我的代码如下.我应该更改什么,以使画布与图像大小相同并完全显示图像?
class AppWindow(Frame):
def __init__(self, parent, list_of_files, write_file):
Frame.__init__(self, parent)
self.parent = parent
...
self.image = None
self.canvas = None
self.index = -1
self.loadImage()
self.initUI()
self.resetCanvas()
def initUI(self):
self.style = Style()
self.style.theme_use("default")
self.pack(fill=BOTH, expand=1)
...
self.canvas = Tkinter.Canvas(self, width = self.image.width(), height = self.image.height())
def loadImage(self):
self.index += 1
img = cv2.imread(self.list_of_files[self.index])
img = cv2.resize(img, (0,0), fx = IMAGE_RESIZE_FACTOR, fy = IMAGE_RESIZE_FACTOR)
b, g, r = cv2.split(img)
img = cv2.merge((r,g,b))
im = Image.fromarray(img)
self.image = ImageTk.PhotoImage(image=im)
def resetCanvas(self):
self.canvas.create_image(0, …Run Code Online (Sandbox Code Playgroud) 我想将Pandas Data Frame列设置为的datetime格式datetime64。这是单独进行的。特别地,以下工作正常:
t = dt['time'].values[0]
datetime.utcfromtimestamp(t.astype(int)/1000000000)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试对整列进行此操作时
dt['datetime'] = dt['time'].apply(lambda x: datetime.utcfromtimestamp(x.astype(int)/1000000000))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
pandas.lib.map_infer中的pandas / src / inference.pyx(pandas / lib.c:62578)()
<ipython-input-26-5950d82979b4> in <lambda>(x)
1 print(type(dt['time'].values[0]))
2
----> 3 dt['datetime'] = dt['time'].apply(lambda x: datetime.utcfromtimestamp(x.astype(int)/1000000000))
4 t = dt['time'].values[0]
5 print(t)
AttributeError: 'Timestamp' object has no attribute 'astype'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何将列转换为格式datetime和/或以datetime格式创建新列?
这是数据框的信息:
我之前没有使用过 SPSS ( .sav) 文件,正在尝试通过将它们导入 R 来使用提供给我的一些数据文件。我没有收到对这些文件的任何解释,并且由于沟通困难,我试图弄清楚尽我所能。
这是我的第一个问题。这是Date导入后 R 数据框中的字段的样子:
> dataset2$Date[1:4]
[1] 13608172800 13608259200 13608345600 13608345600
Run Code Online (Sandbox Code Playgroud)
我不知道数据应该是什么日期,但我发现如果我将上述数字除以 10,这似乎给出了一个合理的日期(2013 年 2 月)。任何人都可以确认这确实是上面所代表的吗?
我的第二个问题是关于另一列名为Begin_time. 这是它的样子:
> dataset2$Begin_time[1:4]
[1] 29520 61800 21480 55080
Run Code Online (Sandbox Code Playgroud)
知道这代表什么吗?我想相信这是一天中时间的某种表示,因为记录用于野生动物观察,但我没有比这更多的信息来尝试猜测。我注意到,如果我拿的区别End_Time和Begin_time我得到像120和180,这似乎是分给我的数字(3小时似乎是合理的,观察野生动物),但绝对数量都远远超过一分钟的数量多天(1440),让我感到困惑。这是 SPSS 的某种计时格式吗?如果是这样,逻辑是什么?
不幸的是,我无法访问 SPSS,因此非常感谢任何帮助。
根据这个答案的建议定制UITableViewCell选择风格?关于如何为我做一个自定义选择样式UITableViewCell我做了以下.
首先,在我的自定义视图控制器中,它有一个UITableView属性作为其数据源和委托,我有以下内容:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//UITableViewCell *cell;
NavTableViewCell *cell;
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Run Code Online (Sandbox Code Playgroud)
那么这是我的整个自定义UITableViewCell:
#import "NavTableViewCell.h"
@implementation NavTableViewCell
- (void)awakeFromNib {
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
[super setHighlighted:highlighted animated:animated];
if(highlighted){
self.contentView.alpha = .5;
}else{
self.contentView.alpha = 1;
}
}
@end
Run Code Online (Sandbox Code Playgroud)
我也试过把代码放进去setSelected.在这两种情况下,我都没有看到所选/突出显示的表格视图单元格中的任何更改.我尝试过更改颜色并更改其中标签的颜色,但根本没有变化.我也尝试过为单元格选择所有类型的选择样式,只要看到我的自定义就无济于事.
我究竟做错了什么?
我有一个datatable每列代表一个时间序列的地方,我想以列顺序的方式获取每个时间序列的最后一个NA值.在我的特定用例中,我的数据如下所示:
a b c
1 2 5
1 -17 9
NA 11 4
NA 57 NA
63 NA NA
Run Code Online (Sandbox Code Playgroud)
因此,我想提取:
a b c
63 57 4
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?到目前为止,我只看到解决每行提取最后一个非NA而不是每列的相反情况的答案.
我有一个看起来像这样的数据框:
userid date count
a 2016-12-01 4
a 2016-12-03 5
a 2016-12-05 1
b 2016-11-17 14
b 2016-11-18 15
b 2016-11-23 4
Run Code Online (Sandbox Code Playgroud)
第一列是用户ID,第二列是日期(由groupby(pd.TimeGrouper('d')生成),第三列是每日计数.但是,对于每个用户,我想确保用户的最小和最大日期之间缺少的任何日期都按每个用户填充为0.因此,如果我从上面的数据框开始,我最终得到如下数据框:
userid date count
a 2016-12-01 4
a 2016-12-02 0
a 2016-12-03 5
a 2016-12-04 0
a 2016-12-05 1
b 2016-11-17 14
b 2016-11-18 15
b 2016-11-19 0
b 2016-11-20 0
b 2016-11-21 0
b 2016-11-22 0
b 2016-11-23 4
Run Code Online (Sandbox Code Playgroud)
我知道有许多方法可以使用pandas数据帧进行重新采样(使用选项来选择向前,向后或平均进行插值)但是我将如何在上面的意义上执行此操作,我希望每个方法都有连续的时间序列userid但是每个用户的时间序列的日期不同?
这是我尝试过的没有用的东西:
grouped_users = user_daily_counts.groupby('user').set_index('timestamp').resample('d', fill_method = None)
但是这会引发错误AttributeError: Cannot access callable attribute 'set_index' of 'DataFrameGroupBy' objects, …
我读了这篇文章,画了点缀(不是虚线!)线,2017年的IBDesignable关于绘制虚线(而不是虚线).但是,我对图形一般不太熟悉,我想知道如何用CALayer做到这一点(所以我不需要做整个获取当前图形上下文的事情).
我试图产生一个看起来像这样的虚线(白色部分,忽略背景):
这是我制作虚线的代码:
CAShapeLayer *shapelayer = [CAShapeLayer layer];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:startPoint];
[path addLineToPoint:endPoint];
[path setLineCapStyle:kCGLineCapRound];
UIColor *fill = [UIColor whiteColor];
shapelayer.strokeStart = 0.0;
shapelayer.strokeColor = fill.CGColor;
shapelayer.lineWidth = 4.0;
shapelayer.lineJoin = kCALineJoinRound;
shapelayer.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:4],[NSNumber numberWithInt:6 ], nil];
shapelayer.path = path.CGPath;
return shapelayer;
Run Code Online (Sandbox Code Playgroud)
如何镜像我引用的SO帖子中的代码但继续使用CALayer?
我尝试修改该帖子中的代码,如下所示:
UIBezierPath * path = [[UIBezierPath alloc] init];
[path moveToPoint:startPoint];
[path addLineToPoint:endPoint];
[path setLineWidth:8.0];
CGFloat dashes[] = { path.lineWidth, path.lineWidth * 2 };
[path setLineDash:dashes count:2 phase:0];
[path …Run Code Online (Sandbox Code Playgroud) 我只是在做一个数据库表的下拉并尝试将它读入python,如下所示:
with query(full_query_string) as cur:
arr = cur.fetchall()
这会产生以下错误fetchall():
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 4: invalid continuation byte
如果我select *收到此错误,而如果我限制为少量行,则不会收到此错误。我尝试在这个 SO post UnicodeDecodeError, invalid continuation byte之后用一些编码来支付,但没有一个能做到这一点。在我不知道编码如何出错的大数据库表中,处理这个问题的最有效方法是什么?此外,没有特定的行是必须的,但我宁愿获得所有行,而不是有此编码问题的行。
我有一个 Pandas Dataframe,其 DatetimeIndex 具有每月 ( M) 的频率。但是,当我从此数据框中绘制列时,绘图上的标签显示日期和时间,即使这些位毫无意义。如何解决此问题,以便仅以YYYY-MM格式显示月份?
python ×5
objective-c ×3
pandas ×3
ios ×2
r ×2
calayer ×1
data.table ×1
datetime ×1
encode ×1
healthkit ×1
matplotlib ×1
spss ×1
time ×1
time-series ×1
timestamp ×1
tkinter ×1
uitableview ×1