受此示例的启发,我正在尝试编写一个小的matplotlib程序,该程序允许用户动态地在散点图中拖放数据点.与使用条形图(因此允许拖动矩形)的示例相比,我的目标是与其他补丁实现相同,例如圆形(任何与矩形相比更具散射图兼容性的补丁) ).但是我仍然坚持更新我的补丁的位置.虽然a Rectangle提供了一个功能,但set_xy我找不到直接模拟Cirlce或Ellipse.获得圆的位置对于矩形也不那么简单,但是可以通过获得边界框来实现.现在缺少的部分是找到一种方法来更新补丁的位置.任何关于如何实现这一点的提示都会很棒!当前最小的工作示例如下所示:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
class DraggablePatch:
def __init__(self, patch):
self.patch = patch
self.storedPosition = None
self.connect()
def getPosOfPatch(self, marker):
ext = marker.get_extents().get_points()
x0 = ext[0,0]
y0 = ext[0,1]
x1 = ext[1,0]
y1 = ext[1,1]
return 0.5*(x0+x1), 0.5*(y0+y1)
def connect(self):
'connect to all the events we need'
self.cidpress = self.patch.figure.canvas.mpl_connect('button_press_event', self.onPress)
self.cidmotion = self.patch.figure.canvas.mpl_connect('motion_notify_event', self.onMove)
def onPress(self, event):
'on button press …Run Code Online (Sandbox Code Playgroud) 所以我是D3的新手,并且一般都使用JavaScript.所以我一直在关注一些目前正在使用创建基本散点图的源代码的教程.现在我的问题是当我添加更多数据集时,如何使用transition()方法移动圆圈?我希望能够设置按钮,当用户按下它们时,它会使用相应的数据集激活transition()方法.我在转换上阅读的教程仅显示了单个矩形的转换,并且手动完成,没有数据,也没有多个项目
//Width and height
var w = 900;
var h = 600;
var padding = 30;
//Static dataset
var dataset = [
[50, 30], [300, 75], [123, 98], [70, 40], [247, 556],
[410, 12], [475, 44], [25, 67], [85, 21], [220, 88],
[600, 150]
];
//Create scale functions
var xScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[0]; })])
.range([padding, w - padding * 2]);
var yScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[1]; })])
.range([h - padding, padding]); …Run Code Online (Sandbox Code Playgroud) 我正在使用Matplotlib制作一些散点图(python 3.4.0,matplotlib 1.4.3,在Linux Mint 17上运行).很容易为每个点单独设置alpha透明度; 有没有办法将它们设置为一个组,以便来自同一组的两个重叠点不会改变颜色?
示例代码:
import matplotlib.pyplot as plt
import numpy as np
def points(n=100):
x = np.random.uniform(size=n)
y = np.random.uniform(size=n)
return x, y
x1, y1 = points()
x2, y2 = points()
fig = plt.figure(figsize=(4,4))
ax = fig.add_subplot(111, title="Test scatter")
ax.scatter(x1, y1, s=100, color="blue", alpha=0.5)
ax.scatter(x2, y2, s=100, color="red", alpha=0.5)
fig.savefig("test_scatter.png")
Run Code Online (Sandbox Code Playgroud)
结果输出:

但我想要更像这样的东西:

我可以通过保存为SVG并在Inkscape中手动分组,然后设置透明度来解决,但我真的更喜欢我可以编码的东西.有什么建议?
我正在使用以下代码:
# Libs
require(ggplot2); require(gridExtra); require(grid)
# Generate separate charts
chrts_list_scts <- list()
# Data
data("mtcars")
# A
chrts_list_scts$a <- ggplot(mtcars) +
geom_point(size = 2, aes(x = mpg, y = disp,
colour = as.factor(cyl))) +
geom_smooth(aes(x = mpg, y = disp),
method = "auto") +
xlab("MPG") +
ylab("Disp") +
theme_bw() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = "none")
# B
chrts_list_scts$b <- ggplot(mtcars) +
geom_point(size = 2, aes(x = mpg, y = drat,
colour = as.factor(cyl))) +
geom_smooth(aes(x …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码在此处(sthda.com)复制示例:
# Change point shapes and colors manually
ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl)) +
geom_point() +
geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
scale_shape_manual(values=c(3, 16, 17))+
scale_color_manual(values=c('#999999','#E69F00', '#56B4E9'))+
theme(legend.position="top")
Run Code Online (Sandbox Code Playgroud)
该网页上的示例说该代码应产生以下结果:

但是,当我在R中运行它时,出现以下错误:
“错误:连续值提供给离散刻度”
有人知道这段代码可能出什么问题吗?还是为什么我得到的结果与示例不同?
如果有人可以运行示例代码并告诉我他们是否遇到相同的错误,我将不胜感激。
我有一个庞大的散点图(~100,000点),我在matplotlib中生成.每个点在此x/y空间中都有一个位置,我想生成包含总点数的某些百分位数的轮廓.
matplotlib中是否有一个函数可以执行此操作?我已经研究过contour(),但是我必须用这种方式编写自己的函数.
谢谢!
之前已经问过这个问题,分散矩阵中的多个数据,但没有得到答案.
我想制作一个散点矩阵,就像在pandas文档中一样,但是对于不同的类使用不同颜色的标记.例如,我希望某些点以绿色显示,而其他点则以蓝色显示,具体取决于其中一列(或单独的列表)的值.
这是使用Iris数据集的示例.点的颜色代表虹膜的种类 - Setosa,Versicolor或Virginica.

pandas(或matplotlib)有办法制作这样的图表吗?
我正在寻找一种方法来包含描述散点图中点的大小的(matplotlib)图例,因为这可能与另一个变量有关,就像在这个基本示例中一样:
import numpy as np
import matplotlib.pyplot as plt
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
a2 = 400*np.random.rand(N)
plt.scatter(x, y, s=a2, alpha=0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
(灵感来自:http: //matplotlib.org/examples/shapes_and_collections/scatter_demo.html)
所以在传说中a2,根据s描述符,理想情况下很少有与0-400(变量)大小相对应的点scatter.
我使用seaborn创建了一个散点图:
import seaborn as sns
sns.set(style="ticks", color_codes=True)
g=sns.scatterplot(x="length", y="coverage", data=df, hue = 'Products', edgecolors=None, alpha = 0.7)
g.set(yscale="log")
plt.xlabel("Length(bp)")
plt.ylabel("Coverage")
plt.legend(loc = 'lower right')
plt.savefig('ATN_plot.png',dpi = 600)
Run Code Online (Sandbox Code Playgroud)
原始数据(部分):
contig length coverage pathway Products
53 1230 2423 stigmatellin Yes
58 1195 885 curacin Yes
65 1161 598 jamaicamide Yes
68 1159 8001 jamaicamide Yes
79 1113 1423 curacin Yes
105 1042 1106 stigmatellin Yes
727 666 223 HSAF (heat stable antifungal factor) Yes
787 655 37 curacin Yes
791 654 13 …Run Code Online (Sandbox Code Playgroud) scatter-plot ×10
python ×7
matplotlib ×6
ggplot2 ×2
r ×2
seaborn ×2
border ×1
colors ×1
contour ×1
d3.js ×1
gridextra ×1
legend ×1
pandas ×1
plot ×1
scatter ×1
transition ×1
transparency ×1