我知道有很多java绘图库的比较,但我找不到我需要的东西.我只想要一个令人费解的简单工具包,它可以从一组坐标创建散点图的图像.没有GUI,没有交互,没有花哨的显示,只有带点的基本XY坐标系.
使用能提供比我需要的更多功能的东西并不是世界末日,但我宁愿不这样做.你知道我在找什么吗?
我只是从scipy堆栈开始.我正在使用CSV版本的虹膜数据集.我可以使用以下方法加载它:
iris=numpy.recfromcsv("iris.csv")
Run Code Online (Sandbox Code Playgroud)
并绘制它:
pylab.scatter(iris.field(0), iris.field(1))
pylab.show()
Run Code Online (Sandbox Code Playgroud)
现在我还要绘制存储在iris.field(4)以下类中的类:
chararray(['setosa', ...], dtype='|S10')
Run Code Online (Sandbox Code Playgroud)
将这些字符串映射到用于绘图的颜色的优雅方法是什么?scatter(iris.field(0), iris.field(1), c=iris.field(4))不起作用(从它预期浮动值或色彩图的文档).我没有找到一种自动生成彩色地图的优雅方式.
cols = {"versicolor": "blue", "virginica": "green", "setosa": "red"}
scatter(iris.field(0), iris.field(1), c=map(lambda x:cols[x], iris.field(4)))
Run Code Online (Sandbox Code Playgroud)
大概是我想要的,但我不太喜欢手动颜色规格.
编辑:最后一行稍微优雅的版本:
scatter(iris.field(0), iris.field(1), c=map(cols.get, iris.field(4)))
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数据框:
Samp1 Samp2 Samp3 Samp4 Samp5
Gene1 84.1 45.2 34.3 54.6 76.2
Gene2 94.2 12.4 68.0 75.3 24.8
Gene3 29.5 10.5 43.2 39.5 45.5
...
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个散点图,其中x轴是样本(Samp1-5),y轴是行(Gene1-3等等),但我希望绘制每行的数据作为同一情节中的不同颜色.
关于如何在R中做到这一点的任何想法?我非常愿意在R中使用ggplot2,格子,汽车或任何其他包装.
我有以下问题:我需要构建数据的散点图.一切都很好,但那里有一些重复的数据:
x = [11, 10, 3, 8, 2, 6, 2, 3, 3, 2, 3, 2, 3, 2, 2, 2, 3, 3, 2, 2];
y = [29, 14, 28, 19, 25, 21, 27, 15, 24, 23, 23, 18, 0, 26, 11, 27, 23, 30, 30, 25];
Run Code Online (Sandbox Code Playgroud)
可以看到有两个元素,(2, 25); (2,27); (3,24);
所以如果用常规构建这个数据scatter(x,y)我会丢失这些信息:

我发现的方法是使用未记录的'jitter'参数
scatter(x,y, 'jitter','on', 'jitterAmount', 0.06);
Run Code Online (Sandbox Code Playgroud)
但我不喜欢前景:

我想要实现的是:

重复数量紧邻该点(如果数量大于1),或者可能在该点内.
知道怎么做到这一点?
我用缩放/平移功能构建了一个d3.js散点图.你可以在这里看到完整的东西(点击"在新窗口中打开"以查看整个内容):http: //bl.ocks.org/129f64bfa2b0d48d27c9
有一些我无法弄清楚的功能,如果有人能指出我正确的方向,我会爱上它:
更不重要的是,还有一些领域我已经找到了解决方案,但它非常粗糙,所以如果你有更好的解决方案,请告诉我:
我编写了自己的函数来计算X和Y数据的中位数.但是我确信必须有更好的方法来使用d3.median这样做,但我无法弄清楚如何使其工作.
var xMed = median(_.map(data,function(d){ return d.TotalEmployed2011;}));
var yMed = median(_.map(data,function(d){ return d.MedianSalary2011;}));
function median(values) {
values.sort( function(a,b) {return a - b;} );
var half = Math.floor(values.length/2);
if(values.length % 2)
return values[half];
else
return (parseFloat(values[half-1]) + parseFloat(values[half])) / 2.0;
};
Run Code Online (Sandbox Code Playgroud)JS的一个非常简化(即旧版)的版本如下.您可以在https://gist.github.com/richardwestenra/129f64bfa2b0d48d27c9#file-main-js找到完整的脚本.
d3.csv("js/AllOccupations.csv", function(data) {
var margin = {top: 30, right: 10, bottom: 50, left: 60},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom; …Run Code Online (Sandbox Code Playgroud) 所以过去一周我一直在研究这个问题.虽然它不能创造奇迹,但我可以说我有一个非常好的结果:
我只是想把这个代码放在那里为所有像我一样的穷人寻找某种vba宏来帮助他们避免散点图中的标签重叠,因为在对这个主题进行研究时,我无法找到任何有用的东西.
我正在查看绘制具有大量点(500,000点及以上)的散点图。
目前,我们正在使用Matplotlib在Python中进行此操作。它绘制点,并提供平移和缩放控件。我不相信它会提供任何聚类或点,它只是将它们全部绘制出来-我想在缩小视图上没有多大意义,但是您可以放大并且它们都在那里。
我一直在用JavaScript制作图表,以使其更易于分发。我正在看D3.js,看那里是否有类似的可行方法。我确实找到了一个基本散点图的示例:
http://bl.ocks.org/mbostock/3887118
首先,您能否绘制出该点数?(500,000及以上)给我的印象是,由于所有DOM对象的开销,您无法做到吗?有办法解决吗?
其次,是否有任何可用的集群,无论是库还是D3.js中完成的示例?
第三,如果有人知道平移/缩放功能和群集的任何很好的例子,甚至只是一个处理它的打包JS库,那就太棒了。
第四,在每个点上都具有单击处理程序,并且可以在覆盖图中甚至在单独的窗口中显示一些文本,这也很好。有什么想法吗?
我想在Gadfly中绘制一个标记的散点图,如下所示.
(来源:http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/images/renda.png)
我怎样才能做到这一点?
散点图很简单:
using Gadfly
X = [1, 2, 2, 3, 3, 3, 4]
Y = [4, 4, 7, 7, 9, 1, 8]
Labels = ["bill", "susan", "megan", "eric", "fran", "alex", "fred"]
plot(x=X, y=Y)
Run Code Online (Sandbox Code Playgroud)
选项是使用颜色,但这不是很好,因为传说变得巨大(特别是在不那么简单的例子中).
plot(x=X,y=Y, color=Labels)
Run Code Online (Sandbox Code Playgroud)

我正在尝试为每个点做一个速度超过米的散点图,其中标记表示不同的类型,大小表示不同的重量,颜色表示一个点超过10分钟的比例.但是,到目前为止我只能按尺寸绘制.
任何帮助都非常感谢.
x = {'speed': [10, 15, 20, 18, 19], 'meters' : [122, 150, 190, 230, 300], 'type': ['phone', 'phone', 'gps', 'gps', 'car'], 'weight': [0.2, 0.3, 0.1, 0.85, 0.0], 'old': [1, 2, 4, 5, 8]}
m = pd.DataFrame(x)
plt.scatter(m.meters, m.speed, s = 30* m.weight)
mkr_dict = {'gps': 'x', 'phone': '+', 'car': 'o'}
meters speed type weight old
0 122 10 phone 0.20 1
1 150 15 phone 0.30 2
2 190 20 gps 0.10 4
3 230 18 gps 0.85 …Run Code Online (Sandbox Code Playgroud) 我必须在绘图上显示的信息是2个坐标:大小和颜色(无填充).颜色很重要,因为我需要一种颜色图表类型的图表来根据颜色值显示信息.
我尝试了两种不同的方法:
创建特定圈子并添加各个圈子.
circle1 = plt.Circle(x, y, size, color='black', fill=False)
ax.add_artist(circle1)
Run Code Online (Sandbox Code Playgroud)这种方法的问题是我找不到根据颜色值设置颜色的方法.即,对于0-1的值范围,我希望0为完全蓝色而1为完全红色,因此在它们之间是紫色的不同色调,其红色/蓝色取决于颜色值的高/低.
之后我尝试使用分散功能:
size.append(float(Info[i][8]))
plt.scatter(x, y, c=color, cmap='jet', s=size, facecolors='none')
Run Code Online (Sandbox Code Playgroud)这种方法的问题是大小似乎没有变化,这可能是我创建数组大小的方式的原因.因此,如果我用大数字替换大小,则图表显示为圆圈.这facecolours = 'none'只是为了绘制周长.