Let's say I have a df like this:
df = pd.DataFrame({'col1': list('aabbb'), 'col2': [1, 3, 1, 5, 3]})
col1 col2
0 a 1
1 a 3
2 b 1
3 b 5
4 b 3
Run Code Online (Sandbox Code Playgroud)
I would like to see a plot, where on the x axis, I have the col1 names ONCE, and on the y axis, the col2 data, as individual dots, so above 'a' I would have two dots at the height of 1 and 3, and …
如何绘制该图中看起来最大的前 5 个值?( Wii, NES, GB, DS, X360)
sns.violinplot(x=df['Global_Sales'],y=df['Platform'],data=df)
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过分组绘制一些数据的散点图。它们按列分组,我希望它们根据组group具有不同的标记样式。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
colors = ['r','g','b','y']
markers = ['o', '^', 's', 'P']
df = pd.DataFrame()
df["index"] = list(range(100))
df["data"] = np.random.randint(100, size=100)
df["group"] = np.random.randint(4, size=100)
df["color"] = df.apply(lambda x: colors[x["group"]], axis=1)
df["marker"] = df.apply(lambda x: markers[x["group"]], axis=1)
plt.scatter(x=df["index"], y=df["data"], c=df["color"])
# What I thought would have worked
# plt.scatter(x=df["index"], y=df["data"], c=df["color"], marker=df["marker"])
plt.show()
Run Code Online (Sandbox Code Playgroud)
我希望这些组也有不同的标记样式。例如,红色条目将具有标记“o”(大点),绿色条目将具有标记“^”(向上三角形)等。
我想
plt.scatter(x=df["index"], y=df["data"], c=df["color"], marker=df["marker"])
Run Code Online (Sandbox Code Playgroud)
本来可以,但是不行……
TypeError: 'Series' objects …Run Code Online (Sandbox Code Playgroud) 我想在中间有文本的两点之间添加注释,并旋转文本以与线对齐。当前示例未按预期旋转:
import matplotlib.pyplot as plt
import numpy as np
def ann_distance(ax,xyfrom,xyto,text=None):
midx = (xyto[0]+xyfrom[0])/2
midy = (xyto[1]+xyfrom[1])/2
if text is None:
text = str(np.sqrt( (xyfrom[0]-xyto[0])**2 + (xyfrom[1]-xyto[1])**2 ))
ax.annotate("",xyfrom,xyto,arrowprops=dict(arrowstyle='<->'))
p1 = ax.transData.transform_point((xyfrom[0], xyfrom[1]))
p2 = ax.transData.transform_point((xyto[0], xyto[1]))
rotn = np.degrees(np.arctan2(p2[1]-p1[1], p2[0]-p1[0]))
ax.text(midx,midy,text,ha='center', va='bottom',rotation=rotn,fontsize=16)
return
x = np.linspace(0,2*np.pi,100)
width = 800
height = 600
fig, ax = plt.subplots()
ax.plot(x,np.sin(x))
ann_distance(plt.gca(),[np.pi/2,1],[2*np.pi,0],'$sample$')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我正在尝试生成具有一定光度的 QSO 的随机概率密度函数,其形式为:
1/( (L/L_B^* )^alpha + (L/L_B^* )^beta )
其中 L_B^*、alpha 和 beta 都是常量。为此,使用以下代码:
import scipy.stats as st
logLbreak = 43.88
alpha = 3.4
beta = 1.6
class my_pdf(st.rv_continuous):
def _pdf(self,l_L):
#"l_L" in this is always log L
L = 10**(l_L/logLbreak)
D = 1/(L**alpha + L**beta)
return D
dist_Log_L = my_pdf(momtype = 0, a = 0,name='l_L_dist')
distro = dist_Log_L.rvs(size = 10000)
Run Code Online (Sandbox Code Playgroud)
(L/L^* 被提升到 10 的幂,因为一切都是以对数刻度进行的)
该分布应该生成一个近似于 的图形,逐渐趋于无穷大,但实际上它生成的图形看起来像这样(10,000 个样本)。无论使用多少样本,上限都是相同的。它受到这样的限制有什么原因吗?
考虑一下:
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
这些是 Python 中删除元素的正确语句:
numbers[0:2] = []
numbers[3:5] = []
Run Code Online (Sandbox Code Playgroud)
但是下面的语句是不允许的:
numbers[::2] = []
Run Code Online (Sandbox Code Playgroud)
ValueError:尝试将大小为 0 的序列分配给大小为 5 的扩展切片
是什么阻止了 Python 中的这种语句?
我在以特定样式格式化数据框时遇到问题。我想要将与一个相关的数据S/N全部聚集在一起。我对数据集的最终目标是绘制所有S/Ns 的 Dis 与 Rate 的关系图。我已经厌倦了迭代行来切片数据,但这并没有奏效。这种格式化的最佳(最简单)方法是什么?谢谢!
例如:S/N332 在第一行有Dis4.6 和Rate91.2,紧接着我希望它有S/N332、9.19Dis和Rate76.2,依此类推,对于所有有S/N332 的行。
S/N Dis Rate
0 332 4.6030 91.204062
1 445 5.4280 60.233917
2 999 4.6030 91.474156
3 332 9.1985 76.212943
4 445 9.7345 31.902842
5 999 9.1985 76.212943
6 332 14.4405 77.664282
7 445 14.6015 36.261851
8 999 14.4405 77.664282
9 332 20.2005 76.725955
10 445 19.8630 40.705467
11 999 20.2005 76.725955
12 …Run Code Online (Sandbox Code Playgroud) 绘图和值(204 kwh、604 kwh、60 kwh)之间的空间太小。如何将这些值移高一点并增加间距?
我拥有的:
我想要的是:
代码:
x_name = ['Average\nneighborhood\u00b9', 'Your\nconsumption', 'Efficient\nneighborhood\u00b2']
plt.figure(facecolor='#E2EBF3')
fig = plt.figure(figsize=(12,10))
plt.bar(x_name, val, color =['cornflowerblue', 'saddlebrown', '#196553'],width = .8)
plt.margins(x = .1 , y = 0.25)
plt.xticks(fontsize=25)
plt.yticks([])
hfont = {'fontfamily':'serif'}
for index, value in enumerate(np.round(val,2)):
plt.text(index,value, str(value)+" kWh",fontsize=25, ha='center', va = 'bottom',**hfont)
Run Code Online (Sandbox Code Playgroud) 如何在特定日期向此图表添加垂直线标记?Week end是日期列。
fig, ax = plt.subplots(figsize=(20,9))
thirteen.plot.line(x='Week end', y='OFF', color='crimson', ax=ax)
thirteen.plot.line(x='Week end', y='ON', color='blue', ax=ax)
ax.set_ylim(bottom=0)
plt.show()
Run Code Online (Sandbox Code Playgroud)
python ×10
matplotlib ×6
pandas ×5
dataframe ×3
astronomy ×1
bar-chart ×1
datetime ×1
dot-plot ×1
python-3.x ×1
scatter ×1
scipy ×1
seaborn ×1
sql ×1
statistics ×1