我无法弄清楚在尝试在 matplotlib 中创建散点图时如何使用颜色。
我正在尝试绘制具有不同颜色点的多个散点图来显示集群。
colors=['#12efff','#eee111','#eee00f','#e00fff','#123456','#abc222','#000000','#123fff','#1eff1f','#2edf4f','#2eaf9f','#22222f'
'#eeeff1','#eee112','#00ef00','#aa0000','#0000aa','#000999','#32efff','#23ef68','#2e3f56','#7eef1f','#eeef11']
C=1
fig = plt.figure()
ax = fig.gca(projection='3d')
for fgroups in groups:
X=[np.random.rand(50),np.random.rand(50),np.random.rand(50)]
y=[np.random.rand(50),np.random.rand(50),np.random.rand(50)]
Z=[np.random.rand(50),np.random.rand(50),np.random.rand(50)]
C=(C+1) % len(colors)
ax.scatter(X,Y,Z, s=20, c=colors[C], depthshade=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我收到的错误如下:
ValueError: to_rgba: 无效的 rgba arg "#" to_rgb: 无效的 rgb arg "#" 无法将字符串转换为浮点数: #
看起来它将这些 RGB 参数视为浮点数。
然而,在 matplotlib 文档中,颜色是以这种风格编写的http://matplotlib.org/api/colors_api.html
我缺少什么?
我正在创建一个 highchart 散点图,其中 X 轴上包含纪元日期时间值,Y 轴上包含浮点值。问题是当我使用标签格式化程序将纪元时间值转换为可读时间值(“DD-MMM-YYYY”)时,在 X 轴上创建具有相同标题的多个标签,并且这些点不与垂直对齐X 轴上的刻度线。
我为它创建了一个 JSFiddle (链接)。我可以做什么来解决这个问题...
$(function () {
$('#container').highcharts({
chart: {
type: 'scatter',
zoomType: 'xy'
},
title: {
text: 'Errors'
},
subtitle: {
text: 'Source: Temp Data'
},
xAxis: {
allowDecimals: false,
title: {
text: 'days',
scalable: false
},
type: 'datetime',
labels: {
formatter: function () {
return Highcharts.dateFormat('%d-%b-%y', moment.unix(this.value));
}
},
tickPixelInterval: 100
},
yAxis: {
title: {
text: 'Weight (kg)'
}
},
legend: {
layout: 'vertical',
align: 'left',
verticalAlign: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Julia 中绘制散点图,我在那里有 3 个课程。
我想为每个类定义不同的颜色。
我试过:
using(PyPlot)
pca = readdlm("pca1_2_fam.txt", header=false);
plot(pca[:,3], pca[:,4], color = pca[:,1])
Run Code Online (Sandbox Code Playgroud)
pca 文件如下:
名称1 208094 -0.00476681 0.00822032
名称1 514876 -0.00531507 -0.00721858
名称2 515043 0.00365503 -0.01794700 名称2
515066 0.00467896 0.00420396名称3
799073 0.00811660 -0.01903420 名称3 GLTGH40
0.00380041 0.00618471
在 R 中,我只是使用以下方法做到了这一点:
colnames(pca)=c("Breed","Animal","PCA1","PCA2")
qplot(PCA1,PCA2,data=pca,color=Breed,geom=c("point")) + theme(legend.position="none")
Run Code Online (Sandbox Code Playgroud)
我想学习如何在 Julia 中做到这一点。
据我所知,我的问题与这篇文章密切相关。
我需要绘制一些标记大小与轴值严格成比例的数据。(已经在这里问过这个问题)。
我的方法如下:
transData.transform获取这两个点的像素值s=(size*dist_to_pix_ratio)**2,但这现在并不重要。)问题是:当我完全按照我所描述的操作时,我得到 y 轴和 x 轴像素数的两个不同值。
这是一个最小的代码:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(7,7))
ax1 = fig.add_subplot(111, aspect='equal')
#setting up an empty scatterplot for pixel reference
xedges=[0.0, 1.0]
yedges=[0.0, 1.0]
emptyscatter=ax1.scatter(xedges, yedges, s=0.0)
#set axes limits
ax1.set_xlim(0.00,1.00)
ax1.set_ylim(0.00,1.00)
# Calculating the ratio of pixel-to-unit
upright = ax1.transData.transform((1.0,1.0))
lowleft = ax1.transData.transform((0.0,0.0))
x_to_pix_ratio = upright[0] - lowleft[0]
y_to_pix_ratio = upright[1] - lowleft[1]
print x_to_pix_ratio, …Run Code Online (Sandbox Code Playgroud) 我在将散点图中的两组点相互连接时遇到问题,使得一条线(在本例中使用虚拟数据)将所有“前”点与相应的“后”点连接起来。'marker = 'o-' 参数不适用于 plt. 分散,但适用于 plt。阴谋。建议如何连接相应的值?谢谢并希望这个问题有意义!
import matplotlib.pyplot as plt
import numpy as np
x1 = ["pre"] * 4
x2 = ["post"] * 4
y1 = [0.1, 0.15, 0.13, 0.25]
y2 = [0.85, 0.76, 0.8, 0.9]
plt.scatter(x1, y1, color='y')
plt.scatter(x2, y2, color='g')
plt.show()
Run Code Online (Sandbox Code Playgroud) 我想不使用点或像素而是使用绘图单位来指定散点大小。以下面为例:
import matplotlib.pyplot as plt
x = [0]
y = [0]
plt.scatter(x,y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这会产生如下图:
比如说,如果我希望标记的半径恰好为 0.002 个绘图单位,该怎么办?据我了解,该s参数表示标记大小的区域(以磅为单位)。有没有办法直接以绘图单位提供它?如果不是,从绘图单位转换为点的最佳方法是什么,以便我可以将其传递到s参数中?
我还看到了一些其他问题,建议使用 aPatchCollection并简单地绘制具有指定半径的圆。我不想使用这种方法。我想避免广泛重写现有代码,而是将s参数与plt.scatter.
我尝试使用这个问题中的代码,它显然允许您根据绘图单位控制标记大小。但是我无法真正让它适用于我的基本情况:
import matplotlib.pyplot as plt
import numpy as np
class scatter():
def __init__(self,x,y,ax,size=1,**kwargs):
self.n = len(x)
self.ax = ax
self.ax.figure.canvas.draw()
self.size_data=size
self.size = size
self.sc = ax.scatter(x,y,s=self.size,**kwargs)
self._resize()
self.cid = ax.figure.canvas.mpl_connect('draw_event', self._resize)
def _resize(self,event=None):
ppd=72./self.ax.figure.dpi
trans = self.ax.transData.transform
s = ((trans((1,self.size_data))-trans((0,0)))*ppd)[1]
if s != self.size:
self.sc.set_sizes(s**2*np.ones(self.n))
self.size = s …Run Code Online (Sandbox Code Playgroud) matplotlib.pyplot.scatter有一个facecolors=None参数将使数据点标记看起来内部是空心的。我怎样才能获得相同的外观pandas.DataFrame.plot.scatter()?
matplotlib.pyplot.scatter()有一个facecolors=None参数将使数据点看起来内部是空心的。如何获得相同的外观seaborn.jointplot()?
在早期版本的seaborn中也发现了相同的论点,但由于某种原因在最新版本(0.11)中被删除。
我对 sns 线图和散点图有问题。基本上我想做的是连接散点图的点以呈现连接映射点的最近线。当面对具有相同 x 轴值的点时,线图会以某种方式改变宽度。我希望线图始终保持相同的实线。
代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
data = {'X': [13, 13, 13, 12, 11], 'Y':[14, 11, 13, 15, 20], 'NumberOfPlanets':[2, 5, 2, 1, 2]}
cts = pd.DataFrame(data=data)
plt.figure(figsize=(10,10))
sns.scatterplot(data=cts, x='X', y='Y', size='NumberOfPlanets', sizes=(50,500), legend=False)
sns.lineplot(data=cts, x='X', y='Y',estimator='max', color='red')
plt.show()
Run Code Online (Sandbox Code Playgroud)
结果:
有任何想法吗?
编辑:
如果我尝试使用 pyplot 它也不起作用:代码:
plt.plot(cts['X'], cts['Y'])
Run Code Online (Sandbox Code Playgroud)
结果:
我需要一条线,它连接最近的点(基本上是图像一上显示的,但具有相同的实线)。
我正在寻找一种方法,以响应线条角度的方式为 matplotlib 中的线条图指定颜色。这是我当前的代码:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
horz = [[0.5,0.6,0.8],[0.1,0.8,0.9],[0.2,0.5,0.9]]
vert = [[0.1,0.2,0.3],[0.05,0.1,0.15],[0.2,0.3,0.35]]
f = plt.figure(figsize=(6,6))
ax = plt.axes()
for column in range(0,len(horz)):
x = np.array(horz[column])
y = np.array(vert[column])
#LINEAR TRENDLINE
z = np.polyfit(horz[column], vert[column], 1)
p = np.poly1d(z)
ax.plot(horz[column],p(horz[column]),"-")
plt.arrow(x=horz[column][-2],y=p(horz[column])[-2],dx=(horz[column][-1]-horz[column][-2]),dy=(p(horz[column])[-1]-p(horz[column])[-2]), shape='full', lw=.01,
length_includes_head=True, head_width=.012, head_length=0.02, head_starts_at_zero=False, overhang = 0.5)
#FIG SETTINGS
plt.xlim([0, 1])
plt.ylim([0.1,0.5])
ax.set_title('Title',
fontsize = 14)
Run Code Online (Sandbox Code Playgroud)
这里的想法是,如果线的角度为 0 度,则它将位于给定梯度的一端,如果线的角度为 90 度,则位于另一端。此外,我希望将线条长度视为颜色的强度。因此,如果线条短,它会更接近白色,如果线条长,它会更接近渐变的原始颜色。