javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

如何在matplotlib中“关闭” imshow()的模糊效果?

我想绘制概率图,但是imshow会为概率为零的点生成模糊值。 如何摆脱围绕真实网格点的模糊外围?

例:

import numpy as np
import matplotlib.pyplot as plt

a=np.asarray([[  0.00000000e+00 , 1.05824446e-01 ,  2.05086136e-04,   0.00000000e+00],
[  1.05824446e-01 ,  3.15012305e-01  , 1.31255127e-01  , 1.05209188e-01],
 [  2.05086136e-04  , 1.31255127e-01 ,  0.00000000e+00 ,  0.00000000e+00],
 [  0.00000000e+00   ,1.05209188e-01  , 0.00000000e+00  , 0.00000000e+00]])
im=plt.imshow(a,extent=[0,4,0,4],origin='lower',alpha=1,aspect='auto')
plt.show()

enter image description here

trans by 2020-08-12T04:33:09Z

r-具有xyz坐标的3d表面图

我希望有经验的人可以帮助您如何从xyz数据准备形状文件。 尽管未提供创建形状文件的上述步骤,但在这里可以看到一个很好的数据集,很好地说明了彗星Churyumov–Gerasimenko。

我试图更好地了解如何将曲面应用于给定的XYZ坐标集。 通过R包“ rgl”可以直接使用笛卡尔坐标,但是环绕起来的形状似乎更加困难。 我找到了R包geometry,它提供了QHULL函数的接口。 我尝试使用它来计算Delaunay三角剖分面,然后可以在delaunayn(bunny, options="Qt")中进行绘制。我无法找出与函数delaunayn相关的某些选项,以可能控制这些分面的最大计算距离。 我希望这里的某人可能对从xyz数据改善表面构造有一些想法。

使用“斯坦福兔子”数据集的示例:

library(onion)
library(rgl)
library(geometry)
data(bunny)

#XYZ point plot
open3d()
points3d(bunny, col=8, size=0.1)
#rgl.snapshot("3d_bunny_points.png")

#Facets following Delaunay triangulation
tc.bunny <- delaunayn(bunny)
open3d()
tetramesh(tc.bunny, bunny, alpha=0.25, col=8)
#rgl.snapshot("3d_bunny_facets.png")

enter image description here

这个答案使我相信Qhull的R实现可能存在问题。 另外,我现在尝试了各种设置(例如delaunayn(bunny, options="Qt")),但收效甚微。 Qhull选项在此处概述

编辑:

这是一个球体的附加(更简单)示例。 即使在这里,小平面的计算也不会总是找到最近的相邻顶点(如果旋转球,您会看到一些小平面穿过内部)。

library(rgl)
library(geometry)
set.seed(1)
n <- 10
rho <- 1
theta <- seq(0, 2*pi,, n) # azimuthal coordinate running from 0 to 2*pi 
phi <- seq(0, pi,, n) # polar coordinate running from 0 to pi (colatitude)
grd <- expand.grid(theta=theta, phi=phi)

x <- rho * cos(grd$theta) * sin(grd$phi)
y <- rho * sin(grd$theta) * sin(grd$phi)
z <- rho * cos(grd$phi)

set.seed(1)
xyz <- cbind(x,y,z)
tbr = t(surf.tri(xyz, delaunayn(xyz)))
open3d()
rgl.triangles(xyz[tbr,1], xyz[tbr,2], xyz[tbr,3], col = 5, alpha=0.5)
rgl.snapshot("ball.png")

enter image description here

trans by 2020-08-11T02:56:43Z

python-用pandas dataframe绘制多行

我有一个如下数据框

   color  x   y
0    red  0   0
1    red  1   1
2    red  2   2
3    red  3   3
4    red  4   4
5    red  5   5
6    red  6   6
7    red  7   7
8    red  8   8
9    red  9   9
10  blue  0   0
11  blue  1   1
12  blue  2   4
13  blue  3   9
14  blue  4  16
15  blue  5  25
16  blue  6  36
17  blue  7  49
18  blue  8  64
19  blue  9  81

我最终想要两行,一条蓝色,一条红色。 红线应基本上为y = x,蓝线应为y = x ^ 2

当我执行以下操作时:

df.plot(x='x', y='y')

输出是这样的:

有没有办法让大熊猫知道有两套? 并将它们相应地分组。 我希望能够将“颜色”列指定为集合区分符

trans by 2020-08-10T23:50:16Z

matplotlib-如何在python中绘制时间序列

我一直在尝试从CSV文件绘制时间序列图。 我设法读取文件,并使用strptime将数据从字符串转换为日期,并存储在列表中。 当我尝试在matplotlib中绘制一个包含日期信息列表的测试图时,它将日期绘制为一系列点。 也就是说,对于日期为2012年5月31日19:00的时间,我在y轴上的2012、05、19、31、00点处有一个点,其中x = 1的值以此类推。 我知道这不是传递日期信息进行绘图的正确方法。 有人可以告诉我如何正确传递此信息。

trans by 2020-08-08T22:36:58Z

r-情节标题的文本换行

我对R中的情节有一个很长的标题,并且一直延伸到情节之外窗口。 如何将标题分成两行?

trans by 2020-08-07T02:58:29Z

r-调整情节标题(主)位置

我一直无法找到一种方法来使用par来调整R中情节和主标题之间的(垂直)距离。 在此示例中:

plot(1, 1, main = "Title")

我可以使用以下方法调整轴标题的位置:

par(mgp = c(2.5, 1, 0))

但是我看不到任何类似的方法来调整主标题。 我知道可以使用titlemtext进行更多的手动控制,但是我认为也有一种方法可以使用par设置标题距离,这对我而言将更加优雅。

trans by 2020-08-06T21:16:39Z

r-如何将2个图(ggplot)合并为一个图?

通过使用R,是否可以将2个ggplot放在一起(即在同一图上)? 我希望显示2个不同数据框的趋势,而不是将它们彼此相邻放置,我想将它们集成到一个图中,而只是更改其中一个的颜色(黑点)。

更具体地说,我有以下2个视觉效果:

ggplot(visual1, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth(fill="blue", colour="darkblue", size=1)

ggplot(visual2, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth(fill="red", colour="red", size=1)

它们看起来像这样(都有黑点,我需要将其中一个更改为其他颜色):

enter image description here

enter image description here

trans by 2020-08-02T23:09:49Z

plot-在ggplot的绘图区域内添加表格

我想在ggplot中添加突出显示的站点的坐标表。

使用上一个问题作为示例数据:

set.seed(1)
mydata <- data.frame(a=1:50, b=rnorm(50))
ggplot(mydata,aes(x=a,y=b)) + 
    geom_point(colour="blue") + 
    geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5)

enter image description here

我想将下表添加到绘图区域内绘图的右下角。 有什么建议吗?

table<-cbind(sites=c("site 1","site 2","site 3","site 4"),mydata[10:13,])
table

    sites  a          b
    site 1 10 -0.3053884
    site 2 11  1.5117812
    site 3 12  0.3898432
    site 4 13 -0.6212406
trans by 2020-07-30T09:03:20Z

r-在x轴上绘制带有日期标签的时间序列

我知道这个问题可能是个陈词滥调,但是我很难做到。

我的数据集格式如下:

    Date            Visits

    11/1/2010       696537
    11/2/2010       718748
    11/3/2010       799355
    11/4/2010       805800
    11/5/2010       701262
    11/6/2010       531579
    11/7/2010       690068
    11/8/2010       756947
    11/9/2010       718757
    11/10/2010      701768
    11/11/2010      820113
    11/12/2010      645259

我想创建一个时序图,其中x轴表示时间,y轴表示时间。 另外,我想用日期标记x轴。 我使用的代码如下:

dm$newday = as.POSIXct(strptime(dm$Day, format="%Y-%m-%d"))
plot(as.Date(dm$day),dm$visits)
axis.Date(1,Day,at=seq(as.Date("2010/10/30"), as.Date("2011/01/29"),by="days"))
trans by 2020-07-29T21:16:58Z

plot-将R ggplot中直方图的y轴归一化

我有一个非常简单的问题,使我无法自拔。

我想缩放直方图的y轴以反映每个bin所占的比例(0到1),而不是像使用y = .. density ..那样将条形的面积总和设为1, 或最高条为1,例如y = .. ncount..。

我的输入是名称和值的列表,其格式如下:

name    value
A   0.0000354
B   0.00768
C   0.00309
D   0.000123

我失败的尝试之一:

library(ggplot2)
mydataframe < read.delim(mydata)
ggplot(mydataframe, aes(x = value)) +
geom_histogram(aes(x=value,y=..density..))

这给了我一个面积为1的直方图,但高度为2000和1000:

try

和y = .. ncount ..给我一个柱状图,柱形图的最高点为1.0,其余部分按比例缩放:

try

但我希望第一个栏的高度为0.5,其他两个栏的高度为0.25。

R也无法识别scale_y_continuous的这些用法。

scale_y_continuous(formatter="percent")
scale_y_continuous(labels = percent)
scale_y_continuous(expand=c(1/(nrow(mydataframe)-1),0)

感谢您的任何帮助。

trans by 2020-07-21T05:02:02Z

python-Matplotlib:用不同的颜色绘制许多断开的线段

我有一组这样的数据记录:

(s1, t1), (u1, v1), color1
(s2, t2), (u2, v2), color2
.
.
.
(sN, tN), (uN, vN), colorN

在任何记录中,前两个值是线段的端点,第三个值是该线段的颜色。 更具体地,plot是第一端点的x-y坐标,(un, vn)是第二端点的x-y坐标。 另外,颜色是具有alpha值的rgb。

通常,任何两个线段都是断开连接的(这意味着它们的端点不一定重合)。

如何使用matplotlib通过一次plot调用(或尽可能少地调用)来绘制此数据,因为可能有成千上万的记录。

尝试次数

将数据准备在一个大列表中,然后针对它调用plot,这太慢了。 例如,以下代码在合理的时间内无法完成:

import numpy as np
import matplotlib.pyplot as plt

data = []
for _ in xrange(60000):
    data.append((np.random.rand(), np.random.rand()))
    data.append((np.random.rand(), np.random.rand()))
    data.append('r')

print 'now plotting...' # from now on, takes too long
plt.plot(*data)
print 'done'
#plt.show()

我可以通过使用None插入技巧来加速绘图渲染,如下所示:

import numpy as np
import matplotlib.pyplot as plt
from timeit import timeit

N = 60000
_s = np.random.rand(N)
_t = np.random.rand(N)
_u = np.random.rand(N)
_v = np.random.rand(N)
x = []
y = []
for s, t, u, v in zip(_s, _t, _u, _v):
    x.append(s)
    x.append(u)
    x.append(None)
    y.append(t)
    y.append(v)
    y.append(None)
print timeit(lambda:plt.plot(x, y), number=1)

这将在我的计算机上执行不到一秒钟。 我仍然必须弄清楚如何嵌入颜色值(带有alpha通道的RGB)。

trans by 2020-07-20T12:07:22Z

在R中绘制3D数据

我有一个3D数据集:

data = data.frame(
    x = rep( c(0.1, 0.2, 0.3, 0.4, 0.5), each=5),
    y = rep( c(1, 2, 3, 4, 5), 5)
)

data$z = runif(
    25,
    min = (data$x*data$y - 0.1 * (data$x*data$y)),
    max = (data$x*data$y + 0.1 * (data$x*data$y))
)

data
str(data)

我想绘制它,但是R的内置函数总是会给出错误

预期增加“ x”和“ y”值

# ### 3D Plots ######################################################
# built-in function always give the error
#    "increasing 'x' and 'y' values expected"
demo(image)
image(x = data$x, y = data$y, z = data$z)

demo(persp)
persp(data$x,data$y,data$z)

contour(data$x,data$y,data$z)

当我在Internet上搜索时,我发现X和Y值的组合不是唯一时会出现此消息。 但是在这里,它们是独一无二的。

我尝试了其他一些库,并且在这里没有问题。 但是我不喜欢默认的绘图样式(内置函数应该可以满足我的期望)。

# ### 3D Scatterplot ######################################################
# Nice plots without surface maps?
install.packages("scatterplot3d", dependencies = TRUE)
library(scatterplot3d)
scatterplot3d(x = data$x, y = data$y, z = data$z)

# ### 3D Scatterplot ######################################################
# Only to play around?
install.packages("rgl", dependencies = TRUE)
library(rgl)
plot3d(x = data$x, y = data$y, z = data$z)
lines3d(x = data$x, y = data$y, z = data$z)
surface3d(x = data$x, y = data$y, z = data$z)

为什么我的数据集不被内置函数接受?

trans by 2020-07-17T08:54:40Z

在matplotlib的子图中嵌入小图

如果要在较大的图中插入一个较小的图,则可以使用“轴”,例如此处。

问题是我不知道如何在子图中执行相同的操作。

我有几个子图,我想在每个子图中绘制一个小图。示例代码将如下所示:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()

for i in range(4):
    ax = fig.add_subplot(2,2,i)
    ax.plot(np.arange(11),np.arange(11),'b')

    #b = ax.axes([0.7,0.7,0.2,0.2]) 
    #it gives an error, AxesSubplot is not callable

    #b = plt.axes([0.7,0.7,0.2,0.2])
    #plt.plot(np.arange(3),np.arange(3)+11,'g')
    #it plots the small plot in the selected position of the whole figure, not inside the subplot

有任何想法吗?

提前致谢!

trans by 2020-07-13T22:54:29Z

R不一致:为什么add = T有时有效,有时在plot()函数中无效?

为什么R与plot()函数中的points()参数不一致?它有时有效,有时却无效!在此示例中,它毫无问题地采用了参数add=TRUE

plot(0:10, 0:10*3)
plot(identity, add=TRUE, xlim=c(0,10))
plot(function (x) { sin(x)*10 }, add=TRUE, xlim=c(0,10))

但是当我发出

plot(c(2, 3, 4), c(20,10,15), add=TRUE, pch="A")

它不起作用! 它说“添加”不是图形参数。

请不要写我应该改用points()。 我知道我可以用。我想了解R的奇怪行为-为什么它有时起作用而有时却不起作用?

trans by 2020-07-12T15:26:06Z

r-绘图中的色点根据值向量的不同而不同

我正在使用R的plot函数绘制下面的图。 它是时间偏移矢量“ shiftTime”的图。 我还有另一个向量“强度”,强度值的范围从〜3到〜9。 我想基于这些值使用颜色渐变为图中的点着色。 在这些示例中,我可以在实际绘制点的值上找到颜色,因此在这种情况下,矢量为'shiftTime'。 只要相应的值在同一索引上,是否还可以使用其他向量?

My plot

trans by 2020-07-12T03:10:28Z

r-在ggp中创建多列图例

我有以下脚本,假设创建具有两列图例的图。

 #!/usr/bin/Rscript
library(ggplot2)
library(plyr)
library(reshape2)
library(scales)

file <- "http://dpaste.com/1354089/plain/";
dat <-read.table(file,header=TRUE);
datm <- melt(dat)

# Plot them
ggplot(datm,aes(x = variable,y = value,fill = Term)) +
geom_bar(position = "fill") +
scale_y_continuous(labels = percent_format())+
theme(legend.direction ="vertical",legend.position = "bottom")+

guides(color=guide_legend(ncol=2))+ # this doesn't seem to work

ggsave(file="~/Desktop/test.pdf",width=11,height=11)

但是它创建了这个数字enter image description here

如何正确执行?

trans by 2020-07-12T01:48:25Z

r-带有误差线的散点图

如何在R中生成以下图? 图中显示的点是平均值,其范围对应于最小值和最大值。我有两个文件中的数据(下面是一个示例)。

x   y
1   0.8773
1   0.8722
1   0.8816
1   0.8834
1   0.8759
1   0.8890
1   0.8727
2   0.9047
2   0.9062
2   0.8998
2   0.9044
2   0.8960
..  ...

enter image description here

trans by 2020-07-10T12:11:42Z

如何使用python(Pandas)形成堆积条形图簇

所以这是我的数据集的样子:

In [1]: df1=pd.DataFrame(np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"])

In [2]: df2=pd.DataFrame(np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"])

In [3]: df1
Out[3]: 
          I         J
A  0.675616  0.177597
B  0.675693  0.598682
C  0.631376  0.598966
D  0.229858  0.378817

In [4]: df2
Out[4]: 
          I         J
A  0.939620  0.984616
B  0.314818  0.456252
C  0.630907  0.656341
D  0.020994  0.538303

我想为每个数据框都具有堆积条形图,但是由于它们具有相同的索引,因此我希望每个索引有2个堆积条形图。

我试图在相同的轴上绘制两个:

In [5]: ax = df1.plot(kind="bar", stacked=True)

In [5]: ax2 = df2.plot(kind="bar", stacked=True, ax = ax)

但它重叠。

然后我尝试首先合并两个数据集:

pd.concat(dict(df1 = df1, df2 = df2),axis = 1).plot(kind="bar", stacked=True)

但是这里一切都堆积了

我最好的尝试是:

 pd.concat(dict(df1 = df1, df2 = df2),axis = 0).plot(kind="bar", stacked=True)

这使 :

enter image description here

这基本上是我想要的,除了我希望将酒吧订购为

(df1,A)(df2,A)(df1,B)(df2,B)等...

我猜有一个把戏,但我找不到!


在@bgschiller的回答之后,我得到了:

enter image description here

这几乎是我想要的。 我希望按索引将栏聚集起来,以使外观清晰可见。

奖励:x标签不是多余的,类似于:

df1 df2    df1 df2
_______    _______ ...
   A          B

感谢您的帮助。

trans by 2020-07-03T06:27:16Z

的Matplotlib:注释3D散点p

我正在尝试使用Matplotlib生成3D散点图。 我想在此处注释单个点,例如2D情况:Matplotlib:如何为散点图放置单个标签。

我尝试使用此功能并查阅了Matplotlib,但发现该库似乎不支持3D注释。 有谁知道如何做到这一点?

谢谢!

trans by 2020-06-23T23:43:26Z

r-使用par(mfrow)编译的图形面板的通用主标题

我汇总了4个地块和29330111872290009000704。我想为上方2个地块绘制一个通用标题,并为两个下方和右侧地块之间居中的下方2个面板绘制一个通用标题。

这可能吗?

trans by 2020-06-21T16:59:59Z

1 2 3 4 5 6 下一页 共6页