小编GJP*_*GJP的帖子

停止pyplot.contour沿着不连续点绘制轮廓

我有一个坐标变换的二维地图.每个点的数据是原始坐标系中的轴上角,从0到360.我正在尝试使用pyplot.contour绘制恒定角度的线,例如45度.轮廓沿着两极之间的45度线出现,但是沿着0/360不连续性连接两个极的轮廓还有一个附加部分.这是一个非常锯齿状的丑陋线,因为它基本上只跟踪像素,一边接近0,另一边接近360.

示例:这是使用全彩色地图的图像: 不连续的彩色地图

您可以在左侧看到蓝色/红色曲线的不连续性.一侧是360度,另一侧是0度.在绘制轮廓时,我得到:

具有不连续性的等高线图

请注意,所有轮廓都连接两个极点,但即使我没有绘制0度轮廓,所有其他轮廓都遵循0度不连续性(因为pyplot认为一边是0而另一边是360,必须有所有其他角度之间).

生成此数据的代码:

import numpy as np
import matplotlib.pyplot as plt
jgal = np.array( [[-0.054875539726,-0.873437108010,-0.483834985808],\
                 [0.494109453312,-0.444829589425, 0.746982251810],\
                 [-0.867666135858,-0.198076386122, 0.455983795705]])

def s2v3(rra, rdec, r):
    pos0 = r * np.cos(rra) * np.cos(rdec)
    pos1 = r * np.sin(rra) * np.cos(rdec)
    pos2 = r * np.sin(rdec)
    return np.array([pos0, pos1, pos2])

def v2s3(pos):
    x = pos[0]
    y = pos[1]
    z = pos[2]
    if np.isscalar(x): x, y, z = np.array([x]), np.array([y]), np.array([z])
    rra = np.arctan2(y, x)
    low = np.where(rra < 0.0)
    high = np.where(rra …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib contour

11
推荐指数
1
解决办法
1351
查看次数

matplotlib的自定义箭头样式,pyplot.annotate

我正在使用matplotlib.pyplot.annotate在我的情节上绘制一个箭头,如下所示:

import matplotlib.pyplot as plt
plt.annotate("",(x,ybottom),(x,ytop),arrowprops=dict(arrowstyle="->"))
Run Code Online (Sandbox Code Playgroud)

我想使用箭头样式,一端是扁平线,另一端是箭头,所以组合样式"| - |" 和" - >"做一些我们称之为"| - >"的东西,但我无法弄清楚如何定义自己的风格.

我想我可能会尝试类似的东西

import matplotlib.patches as patches                                                                                                                                                                              
myarrow = patches.ArrowStyle("Fancy", head_length=0.4,head_width=0.2)
Run Code Online (Sandbox Code Playgroud)

(现在应该与" - >"相同;我可以稍后调整样式)但是如何告诉plt.annotate使用myarrow作为样式?plt.annotate没有arrowstyle属性,而arrowprops = dict(arrowstyle = myarrow)也不起作用.

我也尝试在arrowprops字典中定义它,例如

plt.annotate("",(x,ybottom),(x,ytop),arrowprops=dict(head_length=0.4,head_width=0.2))
Run Code Online (Sandbox Code Playgroud)

但这给了我关于没有属性'set_head_width'的错误.

那么,我如何定义自己的pyplot.annotate样式呢?

python customization plot annotate matplotlib

9
推荐指数
1
解决办法
6810
查看次数

无法从ActivityGroup中的ListActivity中显示AlertDialog

我想在单击ListActivity中的项目时显示AlertDialog.我的应用程序在TabActivity的选项卡下显示ListActivity,并且AlertDialog显示没有问题.ListActivity(称为FavouritesActivity)非常直接来自Android文档,具有以下设置:

    lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {

                //... code to set the strings station, number, route, and direction

                FavouritesActivity.this.confirmSend(position);
            }
        });
Run Code Online (Sandbox Code Playgroud)

然后

public void confirmSend(final int position) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure?")
        .setCancelable(true)
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    //... some code to run here                                                              
                }
            })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
    AlertDialog alert …
Run Code Online (Sandbox Code Playgroud)

android listactivity activitygroup android-alertdialog

4
推荐指数
3
解决办法
7901
查看次数

PHP mktime有时会返回错误的一天

我对mktime有一个简单的问题.我找到以下代码:

echo date("Y-M-d", mktime(11, 45, 0, 01, 05, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 01, 06, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 01, 07, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 01, 08, 2014)); echo ", ";
echo date("Y-M-d", mktime(11, 45, 0, 01, 09, 2014)); echo ", ";
Run Code Online (Sandbox Code Playgroud)

正在产生以下输出:

2014-Jan-05, 2014-Jan-06, 2014-Jan-07, 2013-Dec-31, 2013-Dec-31
Run Code Online (Sandbox Code Playgroud)

日期函数就是为了使它更具可读性; mktime返回的时间戳本身是错误的.的唯一的事情就是改变该月的一天,所以我不知道为什么会有这一天是7和8,为什么两者的8和9当日返回间的中断.

我已经检查过小时,分钟和秒不会改变错误的一天的结果,尽管它们确实改变了确切的时间戳.也就是说,上面的最后两行返回完全相同的时间戳(1388508300)但是如果我更改小时,则时间戳的相对变化是预期的.

如果上下文很重要,这是在WordPress安装中的PHP 5.3中运行.

php wordpress mktime

0
推荐指数
2
解决办法
578
查看次数